我開始學習 PHP,我有一個關于在函式中通過參考傳遞引數的問題。
我寫了這段代碼:
<?php
$str = "ciao";
increment($str);
function increment(&$str){
strtoupper($str);
}
echo $str."\n";
?>
結果是“ciao”而不是“CIAO”。
為什么如果我通過參考函式傳遞一個變數,比如 $str,原始變數不會修改?。我雖然 String $str 在 php 中是不可變的(如 Java),但事實并非如此。要修改我應該寫的原始值
$str=strtoupper($str);
代替
strtoupper($str);
所以,一般來說,為什么如果我在 PHP 的函式中通過參考傳遞引數,我必須將我在函式體中所做的修改保存在同一個變數中?
我希望清楚,謝謝
盧卡
uj5u.com熱心網友回復:
strtoupper() 回傳其操作的結果,因此無論該變數是否通過參考傳遞,您都需要將該結果放回變數中。
function increment(&$str){
$str = strtoupper($str);
}
uj5u.com熱心網友回復:
這里的問題不在于將引數傳遞給參考,而在于strtoupper本身是如何作業的。
如果不是strtoupper你在做其他事情,比如這個
<?php
function increment(&$num)
{
$num ;
}
$n = 1;
increment($n);
echo $n."\n";
你會看到$n外面的變數被函式改變了。
但strtoupper不會就地修改變數:它會回傳大寫的值。
所以這就是為什么您需要將回傳的值重新分配strtoupper給變數的原因:
<?php
$str = "ciao";
increment($str);
function increment(&$str){
$str = strtoupper($str);
}
echo $str."\n";
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/336968.html
