Re: [請益] insert array
※ 引述《josch ()》之銘言:
(略)
: 恩...老師教的全忘了XD, 傳陣列的時候是要傳址進去,php的方法跟C一樣要在前面加&嗎?
: function宣告的地方有需要改嗎?
php的call by reference允許以下兩種方式:
方式一: 叫做 call-time pass-by-reference, 這種方法雖可行, 但不被推薦.
<?php
$x=1;
proc(&$x);
echo $x; //結果會是2
function proc($a){
$a++;
}
?>
方式一在php早期發展時就有了, 但是後來升級到php4.x(還是5.x?忘了)版時,
開發團隊對外聲明'不建議'如此使用. 所以在執行階段時, 會出現警告. 不過
可能為了讓舊版的php code能夠向上相容, 所以提供一個機制: 在php.ini當中,
若設定 allow_call_time_pass_reference = on 的話, 則不會出現警告.
方式二: 是一般屬於正常使用的方式, 在函式定義時就宣告call by reference.
<?php
$x=1;
proc($x);
echo $x; //結果也是2
function proc(&$a){
$a++;
}
?>
至於維護到比較舊版的程式碼時, 或許有時會發現到以下'脫褲子放屁'的情況:
<?php
$x=1;
proc(&$x);
echo $x; //結果也是2
function proc(&$a){
$a++;
}
?>
php容許這樣的寫法, 視其為 call-time pass-by-reference, 結果如同上述的
方式一.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.104.187.65
※ 編輯: bobju 來自: 59.104.187.65 (03/25 10:54)
推
03/25 10:58, , 1F
03/25 10:58, 1F
PHP 近期熱門文章
PTT數位生活區 即時熱門文章