我有以下代碼:PHP 7:通過引用傳遞非變量以及爲什麼通知如果函數通過,但是如果數組通過時發生致命錯誤?
$family = cis_resempty(wp_get_post_terms($post->ID,'family'),0);
我收到以下錯誤:
Notice: Only variables should be passed by reference in C:\xampp.....xxx.php on line 18
如果我做了以下內容:
$family = cis_resempty(array('a'),0);
我甚至得到
Fatal error: Only variables can be passed by reference in C:\xampp...xxx.php on line 16
功能cis_resempty是這樣的(但其從庫):
function cis_resempty(&$var,$key) { ... }
發現,如果我刪除cis_resempty的參數列表中的&
符號沒有錯誤。
如果我這樣做:
$family = @cis_resempty(wp_get_post_terms($post->ID,'family'),0);
沒有通知,一切工作 - 但Netbeans的說:
Misuse of the error control operator
但是,如果我這樣做:
$family = @cis_resempty(array('a'),0);
致命錯誤仍然存在。
爲什麼我可以通過引用傳遞一個函數,並使用錯誤控制運算符來抑制通知,但是如果我傳遞一個數組,我會得到一個致命錯誤?
爲什麼通過引用傳遞非變量很糟糕?