我希望能夠將一個數組傳遞給一個函數,並使函數的行爲有所不同,具體取決於它是「列表」樣式數組還是「散列」樣式陣列。例如: -確定一個數組是否是關聯(散列)或不
myfunc(array("One", "Two", "Three")); // works
myfunc(array(1=>"One", 2=>"Two", 3=>"Three")); also works, but understands it's a hash
可能輸出類似:
One, Two, Three
1=One, 2=Two, 3=Three
即:該函數的一些不同的東西,當它「檢測」這是傳遞一個哈希,而不是一個數組。你能否告訴我來自Perl背景,其中%哈希是來自@arrays的不同引用?
我相信我的例子很重要,因爲我們不能僅僅測試一下鍵是否是數字,因爲你可以在你的散列中使用數字鍵。
我專門找避免使用的myfunc(array(array(1=>"One"), array(2=>"Two"), array(3=>"Three")))
尋找這樣的事情? http://stackoverflow.com/questions/173400/php-arrays-a-good-way-to-check-if-an-array-is-associative-or-sequential – 2011-05-13 19:30:09
有趣的問題。很遺憾,PHP不會區分array('a','b','c')和array(0 =>'a',1 =>'b',2 =>'c')...... – Tadeck 2011-05-13 19:31:41
PHP將始終將數組鍵(「1」=>「1」)作爲整數存儲。無法檢測到。您只能探測不斷增長的密鑰,才能將真正的列表與索引數組區分開來。 – mario 2011-05-13 19:35:49