2013-09-16 108 views
0

基本上我有此數組:查找多維數組索引

array(
    [0] => array("id" => "0", "header" => "img1"), 
    [1] => array("id" => "4", "header" => "img4") 
    [2] => array("id" => "6", "header" => "img6") 
) 

如果我有$ ID =「4」,我怎樣才能提取索引[1],以獲得「報頭」值?

回答

1

你會想要做這個foreach循環。但說實話,如果你的數組索引結構比你能做的更簡單的isset測試更好,那麼在你確認它已經存在之後再獲取這個值。

正確的做法:

$headers = array(0 => 'img1', 4 => 'img4', 6 => 'img6'); 

if (isset($headers[$index])) { 
    return $headers[$index]; 
} 

這裏是如何處理它與你的陣列(更從處理的角度來看昂貴):

$headers = array(
    0 => array("id" => "0", "header" => "img1"), 
    1 => array("id" => "4", "header" => "img4"), 
    2 => array("id" => "6", "header" => "img6") 
); 

foreach ($headers AS $value) { 
    if ($value['id'] == $index) { 
    return $value['header']; 
    } 
} 
+0

其中$ index是要使用的ID。 – pthurmond

+0

我不能只獲得0,1或2的值嗎? – Xriuk

+0

當然,只要你有一種方法可以知道要使用哪個索引,那麼索引是什麼並不重要。 – pthurmond

0
foreach ($array as $key => $value) { 
    if ($value['id'] == '4') { 
     echo $value['header']; 
     break; 
    } 
} 

這將是更好的存儲idheader像這樣的例子:

array(
    "0" => "img1", 
    "4" => "img4", 
    "6" => "img6", 
); 
+0

哈哈,我們從字面上做了幾乎完全相同的事情。 – pthurmond

+0

我不能/不想修改結構,ids和頭文件來自DB – Xriuk

0

數組在PHP實際上是哈希表的背後場景,所以按鍵訪問元素非常快。如果可以的話,就像在其他答案中已經提到的那樣,改變數組在源處創建的方式,以使用id(我認爲它是唯一的)作爲關鍵字。

改變你目前的陣列由id進行索引,您可以使用此代碼:

$indexed = array(); 
foreach($array as $element) { 
    $indexed[$element['id']] = $element['header']; 
} 
// $indexed now resembles id => header 

然後,您可以訪問使用$indexed[$id]在固定時間內header值。