91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中怎么實現函數引用返回

發布時間:2021-07-14 15:58:28 來源:億速云 閱讀:99 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關PHP中怎么實現函數引用返回,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

引用返回

手冊里是這么寫的:引用返回用在當想用函數找到引用應該被綁定在哪一個變量上面時。不要用返回引用來增加性能,引擎足夠聰明來自己進行優化。僅在有合理的技術原因時才返回引用!要返回引用

當你想將函數的返回引用綁定到某個變量時,PHP允許你這么做:

function &returns_reference()
{
  static $someref = 0;
  $someref++;
  return $someref;
}
 
$newref = &returns_reference();//引用返回,相當于 $newref = &$someref;
echo $newref; //1
//phpfensi.com
$notref = returns_reference(); //值傳遞的是副本
$newref = 100;
echo $notref; //2
 
$newref = 100;
echo returns_reference(); //101

可見,想讓函數返回引用,必須在函數申明和賦值時都帶上&操作符.

對于類中方法也是如此:

class foo {
  public $value = 0;
 
  public function &getValue() {
    return $this->value;
  }
}
 
$obj = new foo;
$myValue = &$obj->getValue(); // $myValue is a reference to $obj->value, which is 42.
$obj->value = 2;
echo $myValue;

一些簡單的例子

看下面的簡單例子,嘗試去理解引用返回.

<?php
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
?>
//程序運行結果:
1
2
3
6

盡管函數聲明方式是 function &test() 這樣,但我們通過這種方式 $a = test() 的函數調用得到的其實不是函數的引用返回,這跟普通的函數調用沒有區別。PHP 規定通過 $a = &test() 這種方式得到的才是函數的引用返回。

用上面的例子來解釋就是,$a = test() 這種方式調用函數,只是將函數的值賦給 $a 而已,而$a做任何改變都不會影響到函數中的$b。

而通過 $a = &test() 方式調用函數呢,它的作用是將 return $b 中的 $b 變量的內存地址與 $a 變量的內存地址指向了同一個地方。即產生了相當于這樣的效果 ($a=&$b), 所以改變 $a 的值也同時改變了 $b 的值。

所以在執行了

$a = &test();

$a = 5;

以后,$b的值變為了5。

再來個程序例子加深理解:

<?php
/*
** 值傳遞和引用傳遞,值傳遞傳遞的是值的一個復本,引用傳遞傳遞的是值指向的內存地址
*/
// 函數的引用,定義時也要加上 &
function &func($a,$b){ 
 // 這里為了更直觀看到效果,定義一個靜態變量
 static $result = 0;  
 $result+=$a+$b;
 echo $result.'<br />';
 return $result;
}
 
$a = $b = 10;
// PHP里這樣寫函數的引用調用,和調用普通函數沒有區別(只是將函數的返回值復制給$c這個變量,$c做任何改變不會影響上面函數中的$result)
// 要記住:PHP里的函數引用定義及調用都要在函數名前加上 &
$c = func($a,$b); 
// 第一次執行func(),其靜態變量$result的值變為 20(10+10)
// 改變$c的值,不會對下面一行語句產生影響
$c = 666; 
// 第二次執行func(),其靜態變量$result的值變為 40(20+10+10)
$c = func($a,$b);
echo '<hr />';
// 這樣才是PHP中引用函數的調用方式
$d = &func($a,$b); 
// 第三次執行func(),其靜態變量$result的值變為 40(40+10+10)
$d = 888;
// 第四次執行func(),其靜態變量$result的值變為 908(888+10+10)
$d = func($a,$b);
?>

上述就是小編為大家分享的PHP中怎么實現函數引用返回了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

鄂托克旗| 临高县| 同仁县| 成安县| 澳门| 黎平县| 巴青县| 石台县| 普定县| 晋江市| 富蕴县| 金坛市| 安化县| 肃南| 曲沃县| 万载县| 西充县| 岚皋县| 大同市| 丹阳市| 榆树市| 阜阳市| 阜宁县| 天台县| 温州市| 宁都县| 根河市| 区。| 通城县| 嫩江县| 永年县| 渭南市| 沐川县| 乌拉特中旗| 名山县| 溧水县| 财经| 绍兴县| 比如县| 股票| 黑龙江省|