PHP變量引用(&)、函數引用和對象引用_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:CI中view的重寫 代碼
      !--?php if (!defined('BASEPATH')) exit('No direct script access allowed'); /** * common class * * @package default * @author mark **/ class common extends CI_Controller { public function __construct(){ parent::__construct(); } /** * 重寫view 使能改

       1.變量的引用

      PHP 的引用 兩個變量的指針指向同一內存地址

      $a="ABC"; $b =&$a; echo $a;//這里輸出:ABC echo $b;//這里輸出:ABC $b="EFG"; echo $a;//這里$a的值變為EFG 所以輸出EFG echo $b;//這里輸出EFG

      2.函數的引用傳遞(傳址調用)

      function test(&$a) { $a=$a+100; } $b=1; echo $b;//輸出1 test($b); //這里$b傳遞給函數的其實是$b的變量內容所處的內存地址,通過在函數里改變$a的值 就可以改變$b的值了 echo "<br>"; echo $b;//輸出101 ?>

       

      3.函數的引用返回

      function &test() { static $b=0;//申明一個靜態變量 $b=$b+1; echo $b; return $b; } $a=test();//這條語句會輸出 $b的值 為1 $a=5; $a=test();//這條語句會輸出 $b的值 為2 $a=&test();//這條語句會輸出 $b的值 為3 $a=5; $a=test();//這條語句會輸出 $b的值 為6

      下面解釋下:
      通過這種方式$a=test();得到的其實不是函數的引用返回,這跟普通的函數調用沒有區別 至于原因: 這是php的規定
      通過$a=&test()方式調用函數呢, 他的作用是 將return $b中的 $b變量的內存地址與$a變量的內存地址 指向了同一個地方
      即產生了相當于這樣的效果($a=&$b;) 所以改變$a的值 也同時改變了$b的值 所以在執行了

      4.對象的引用(PHP5)

      class foo { public $bar = 1; } $a = new foo; //$a其實也是一個引用 $b = $a; //拷貝引用 ($a)=($b)={id1} $a->bar = 2; echo "b->bar = $b->bar\n"; $b->bar = 3; echo "a->bar = $a->bar\n"; //修改了b,但實際上是修改了a和b所引用的同一個對象 //并不會引發 Copy On Write 創建一個新對象b $a = new foo; //$a被修改為一個新的引用,$b沒有改變 //($a)={id2} ($b)={id1} $a->bar = 4; echo "b->bar = $b->bar\n"; $b = &$a; //顯式地使用引用,b成為“對象的引用”的引用 $a = new foo; //($a)={id3} ($b)=&($a)=&{id3} $a->bar = 5; echo "b->bar = $b->bar\n" //==output==== b->bar = 2 a->bar = 3 b->bar = 3 b->bar = 5

      分享:如何在PHP語言中使用JSON
      從5.2版本開始,PHP原生提供json_encode()和json_decode()函數,前者用于編碼,后者用于解碼。 一、json_encode() 該函數主要用來將數組和對象,轉換為json格式。先看一個數組轉換的例子: $arr = array ('a'=1,'b'=2,'c'=3,'d'=4,'e'=5); echo json_encode($arr); 結

      來源:模板無憂//所屬分類:PHP教程/更新時間:2015-02-04
      相關PHP教程