[php] in_array 與 GLOBALS 的組合
2016 Feb 05 未分類
最近寫一段 seo-rank.tw 的 shell script
剛好組合了 in_array 跟 GLOBALS
in_array 是看某個 array 裡面有沒有某個 key 的元素
GLOBALS 則是拿來存取全域變數
先不管用全域變數好不好 這不是本篇的重點
我想拿 in_array 去檢查某個變數有沒有在 GLOBALS
所以寫了
$existed = in_array('abc', $GLOBALS);
用 var_dump 去印 $GLOBALS['abc'] 明明就有東西喔
但 $existed 永遠都是 false
很神奇
google 了一下果然就有結果
因為 GLOBALS 變數 是遞迴的
GLOBALS 裡面有個元素叫做 GLOBALS
也就是自己
所以如果你企圖用一些把樹狀結構走完的 function 去印 GLOBALS 的話
可能會爆炸(跑不完)
in_array 就是類似的東西
所以 in_array 遇到遞迴的 array
一律都會回傳 false
我不知道 in_array 怎麼檢查遞迴的 array 結構
但既然 in_array 知道這件事情
那表示是可以判斷的
反正呢
GLOBALS 就是不能用 in_array
只能用 isset($GLOBALS['abc']) 判斷
0則留言