2013-06-03 51 views
2

我知道如果你手動在你的數組中聲明鍵,它就被認爲是散列,如果它是一個自生成的鍵,它就是一個數組(順序)。那麼,如果我手動聲明如何在PHP中判斷它是數組還是散列?

$array1 = array(1 => 123, 2 => 312, 3 => 456); 
// and 
$array2 = array(123,312,456); 

問題:

  1. $array1一個數組或哈希?
  2. 我的想法是散列和數組正確?
+0

檢查這裏的第一條評論http://php.net/manual/en/function.is-array.php – elclanrs

+4

PHP沒有散列的概念,PHP中的散列只是一個關聯數組。 – sevenseacat

+0

PHP沒有哈希的概念。你應該在PHP中編寫自己的代表'lists'(數組)和'hashes'(關聯數組)的類,以實現你想要的。 – Nemoden

回答

2

PHP只使用關聯數組。要確定是否陣列可以索引數組從0size - 1例如,其中的元件已陣列推,或使用array[] = x添加,已知的唯一方法是,以檢查是否所有的鍵是從0size - 1。 (請注意,可以使用來自0的增量鍵,通過「關聯」方式(即提供鍵和值)構建數組,並且無法確定它是否使用上面給出的方法([]),因爲,無論如何,這都沒有區別)

$i = 0; 
foreach (array_keys($array) as $key) { 
    if ($key !== $i) break; // Note the !== (not !=) 
    $i++; 
} 

if ($i == count($array)) { 
    // looks like array was built using indexing (see text above) 
} 

最終測試$i == count($array),如果爲真,則表示所有的鍵,其中數字,從0開始,1的每個元素遞增直到最後一個元素。

相關問題