程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php 傳值賦值與引用賦值的區別

php 傳值賦值與引用賦值的區別

編輯:PHP綜合
傳值賦值:當將一個表達式的值賦予一個變量時,整個原始表達式的值被賦予到目標變量。這意味著,例如,當一個變量的值賦予另一個變量時,改變其中一個變量的值,將不會影響到另一個變量。
復制代碼 代碼如下:
<?php <?php
$a=123; $a=123;
$b=$a; $b=&$a;
$a=321; $a=321;
Echo”$a,$b”;//顯示”321,123” Echo”$a,$b”;//顯示”321,321”
?> ?>
引用賦值:新的變量簡單的引用了原始變量,改變新的變量將影響到原始變量使用引用賦值,簡單地將一個&符號加到將要賦值的變量前(源變量)
類型戲法PHP 在變量定義中不需要(或不支持)明示的類型定義;變量類型是根據使用該變量的上下文所決定的。也就是說,如果把一個字符串值賦給變量 var ,var 就成了一個字符串。如果又把一個整型值賦給 var ,那它就成了一個整數。
類型強制轉換
允許的強制轉換有: (int),(integer) - 轉換成整型 (bool),(boolean) - 轉換成布爾型 (float),(double),(real) - 轉換成浮點型 (string) - 轉換成字符串 (array) - 轉換成數組 (object) - 轉換成對象 Settype()進行類型轉換
函數Settype()
[code]
<?php
$foo = "5bar"; // string
$bar = true; // boolean

settype($foo, "integer"); // $foo 現在是 5 (integer)
settype($bar, "string"); // $bar 現在是 "1" (string)
?>

變量范圍變量的范圍即它定義的上下文背景(也就是它的生效范圍)。大部分的 PHP 變量只有一個單獨的范圍。這個單獨的范圍跨度同樣包含了 include 和 require 引入的文件。
靜態變量變量范圍的另一個重要特性是靜態變量(static variable)。靜態變量僅在局部函數域中存在,但當程序執行離開此作用域時,其值並不丟失。
數組PHP 中的數組實際上是一個有序圖。圖是一種把 values 映射到 keys 的類型。此類型在很多方面做了優化,因此可以把它當成真正的數組來使用,或列表(矢量),散列表(是圖的一種實現),字典,集合,棧,隊列以及更多可能性。因為可以用另一個 PHP 數組作為值,也可以很容易地模擬樹。
定義 array() 可以用 array() 語言結構來新建一個 array。它接受一定數量用逗號分隔的 key => value 參數對。
array( key => value , ... )
// key 可以是 integer 或者 string
// value 可以是任何值
復制代碼 代碼如下:
<?php // 現在刪除其中的所有單元,但保持數組本身的結構
// 創建一個簡單的數組 foreach ($array as $i => $value) {
$array = array(1, 2, 3, 4, 5); unset($array[$i]);
print_r($array); }
print_r($array);
// 添加一個單元(注意新的鍵名是 5,而不是你可能以為的 0)
$array[] = 6;
print_r($array); // 重新索引:
$array = array_values($array);
$array[] = 7;
print_r($array);
?>

unset() 函數允許取消一個數組中的鍵名。要注意數組將不會重建索引。
復制代碼 代碼如下:
<?PHP
$a = array( 1 => 'one', 2 => 'two', 3 => 'three' );
unset( $a[2] );
/* 將產生一個數組,定義為
$a = array( 1=>'one', 3=>'three');
而不是
$a = array( 1 => 'one', 2 => 'three');
*/
$b = array_values($a);
// Now $b is array(0 => 'one', 1 =>'three')
?>

構造函數
void __construct ([ mixed $args [, $... ]] )
PHP 5 允行開發者在一個類中定義一個方法作為構造函數。具有構造函數的類會在每次創建對象時先調用此方法,所以非常適合在使用對象之前做一些初始化工作。
Note: 如果子類中定義了構造函數則不會暗中調用其父類的構造函數。要執行父類的構造函數,需要在子類的構造函數中調用 parent::__construct()。
Example#1 使用新標准的構造函數
復制代碼 代碼如下:
<?php
class BaseClass {
function __construct() {
print "In BaseClass constructor\n";
}
}
class SubClass extends BaseClass {
function __construct() {
parent::__construct();
print "In SubClass constructor\n";
}
}
$obj = new BaseClass();
$obj = new SubClass();
?>

雙引號裡面的字段會經過編譯器解釋,然後再當做html代碼輸出。單引號裡面的不進行解釋,直接輸出。$abc='my name is tom'; echo $abc//結果是my name is tom ;echo'$abc'//結果是$abc;echo”$abc”//結果是my name is tom


訪問控制對屬性或方法的訪問控制,是通過在前面添加關鍵字 public、protected 或 private 來實現的。由 public 所定義的類成員可以在任何地方被訪問;由 protected 所定義的類成員則可以被其所在類的子類和父類訪問(當然,該成員所在的類也可以訪問);而由 private 定義的類成員則只能被其所在類訪問。
復制代碼 代碼如下:
<?php
class MyClass
{
public $public = 'Public';
protected $protected = 'Protected';
private $private = 'Private';
function printHello()
{
echo $this->public;
echo $this->protected;
echo $this->private;
}
}

抽象類PHP 5中引入了抽象類和抽象方法。不允許創建一個已經定義為abstract的類的一個實例。任何至少包含一個抽象方法的類也必須是抽象的。被定義為抽象的方法僅僅是聲明方法的一個信號,並不能定義它們的實現。
當從一個抽象類繼承時,在父類中所有抽象方法的標記的聲明必須通過子類定義;另外,這些方法必須用定義相同的訪問屬性。例如,如果方法被定義為protected類型,執行函數必須定義為protected或public.
接口對象接口允許你創建一個指定類的方法的執行代碼,而不必說明這些方法是如何被操作(處理)的。接口被用來定義接口關鍵字的使用,同樣作為一個標准類,但沒有任何方法有它們內容的定義。在接口中所有的方法必須聲明為public,這是接口的特性。implements (執行,實現)為了實現一個接口,使用了implements操作。在接口中所有的方法必須在一個類的內部實現;疏忽這些將導致一個致命錯誤。如果渴望通過使用一個逗號分開每個接口,類可以實現多個接口。
重載方法調用和成員訪問都能通過__call,__get和__set方法被加載。這些方法將只有當你試圖訪問不包括成員或方法的對象或繼承對象時觸發。不是所有的重載方法都必須被定義為static.從PHP 5.1.0開始也可以通過__isset()和__unset()方法逐個重載isset()和unset()函數。
PHP $_GET變量是通過get方法從表單中獲取“值”的。當使用“$_GET”變量時,所有的變量名和變量值都會顯示在URL地址欄內;所以,當你發送的信息包含密碼或是其他一些敏感信息時,就不可以再使用這種方法。
PHP $_POST變量的作用是:獲取method = “post”方法發送的表單變量。
案例
復制代碼 代碼如下:
<form action="welcome.php" method="post">
Enter your name:
<input type="text" name="name" />
Enter your age:
<input type="text" name="age" />
<input type="submit" />
</form>

Cookie通常用來驗證或辨別一個用戶。Cookie是通過服務器發送到用戶計算機中的一個小文件。每次,當相同的計算機通過浏覽器請求一個頁面時,原先存儲的cookie也會發送到服務器。你可以使用PHP來創建和獲取cookie的值。
復制代碼 代碼如下:
<?php
setcookie("user", "Alex Porter", time()+3600); ?>
<html> <body></body> </html>
獲取cookie值<?php
// Print a cookie
echo $_COOKIE["user"];
// A way to view all cookies
print_r($_COOKIE);
?>

PHP session變量的作用是:存儲用戶的session信息,或者改變用戶的session設置。Session變量儲存了一個單一用戶的信息,它可以被所有的頁面使用。
<?php session_start(); ?> <html> <body></body> </html>
Mvc模式 將應用的表示與底層應用邏輯相分離 分三個部分:模型 視圖 控制器
Zend_controllers路由發送一個用戶請求時,它會自動地在控制器目錄中查找一個名為nameController.php的文件,這裡name對應所指定的控制器名,這說明名為news的控制器對應於一個名為newscontroller.php的文件
Smarty是一個php編寫的模板引擎,使你能輕松地將應用輸出和表示邏輯和應用邏輯分離
ZEND配置
1、創建本地解析C:\WINNT\system32\drivers\etchosts
127.0.0.1 phpweb20 127.0.0.1 phpmyadmin
2、httpd.conf D:\AppServ\Apache2.2\conf
(1)打開重寫引擎 hpptd.conf (沒有#的是能打開的模塊) #LoadModule rewrite_module
去掉前面的#
(2)打開虛擬主機 #Include conf/extra/httpd-vhosts.conf 去掉前面#
3、httpd-vhosts.conf
復制代碼 代碼如下:
<VirtualHost *:80>
ServerName phpweb20
DocumentRoot "d:\appserv\www\phpweb20\htdocs"
<Directory "d:\appserv\www\phpweb20\htdocs">
AllowOverride All
Options All
</Directory>
php_value include_path ".;d:\appserv\www\phpweb20\include;D:\AppServ\php5\ext"
</VirtualHost>

4、創建.htaccess
5、修改php.ini
C:\WINNT
導入
php_pdo.dll
php_pdo_mysql.dll
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved