[php] in_array 與 GLOBALS 的組合

最近寫一段 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’]) 判斷

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料