我試圖理解爲什麼PHP documentation for variable functions指出:PHP變量函數和語言結構
變量函數不能用於語言結構,例如echo, 打印,取消設置(),isset()函數的工作,空(),包含,要求等等。 利用包裝函數將這些結構中的任何一個用作 變量函數。
我嘗試了一些這些,他們的工作只是罰款:
function animal() {
return 'Monkey';
}
$animal = 'animal';
echo $animal();
回報Monkey
- 就像人們所期望的。
與print
構造同樣的結果 - 然後,我嘗試unset()
並且它也可以精絕:
function getIndex() {
return 0;
}
$index = 'getIndex';
$array = array(
'Monkey',
'Gorilla'
);
unset($array[$index()]);
print_r($array);
這將返回Array ([1] => Gorilla)
。
有什麼我在這裏失蹤?只需添加 - 我使用PHP 5.5.14。
你預計會發生什麼? – 2014-10-07 09:44:05
嘗試'$ function ='echo'; $ function('Hello World');' – 2014-10-07 09:47:16
我想我明白了 - 本來我認爲你將無法將這些結構與變量函數結合使用,但我相信它們只是指你不能聲明變量的事實例如'echo'($ echoVariable ='echo'),並將其作爲函數調用:$ echoVariable()。 – 2014-10-07 09:47:38