2014-01-30 34 views

回答

17

試試這個,原因unset($linkExtHelp[0])分配給變量echo $totalArray = 您不能unset()值賦給變量,你可以使用未設置之前和之後取消設置爲如下面檢查。換句話說,unset沒有任何返回值,因爲unset是無效的。無效 - 不向調用者提供結果值。語法

:代替無效復位(混合是$ var [,混合$ ...])

echo "Before unset:",$linkExtHelp[0]; 
unset($linkExtHelp[0]); 
echo "After unset:",$linkExtHelp[0]; 

echo $totalArray =  unset($linkExtHelp[0]); 
+0

Nit:'unset' *不是函數。 A * real * [void]函數會導致不同的錯誤。 – user2864740

7

unset沒有返回值 - 它不能即使這樣的產品被接受,也可以用作有意義的表達。

然而,解析錯誤是因爲unset is a keyword和一個「特殊的生產」造成的:儘管unset看起來像一個功能,它是不是功能。因此,unset僅作爲聲明 每個語言語法有效。

生產可以在zend_language_parser.y找到:

309 unticked_statement: 
     | .. 
338 | T_UNSET '(' unset_variables ')' ';' 

的語法是由於歷史的設計選擇,可以說是從一個一致性視點一個錯誤:

Note: Because [unset] is a language construct and not a function, it cannot be called using variable functions.

還有「(未定型)鑄造」,但我在這裏忽略了這一點。

0

您不能分配「未設置」。這是我的方式。 你需要做一個臨時數組。

$totalArray = $linkExtHelp; // assign it to a new array (so you can keep the original one) 

foreach ($totalArray as $key => $value) { 
unset($totalArray [$key]['save_day']); // if you need to remove all of 'save_day' value from multi array 
} 
var_dump($totalArray); // after unset 
var_dump($linkExtHelp); // the original array 


//echo $totalArray =  unset($linkExtHelp[0]); // This is wrong. no echo 

我希望它有幫助。

相關問題