基本上我有此數組:查找多維數組索引
array(
[0] => array("id" => "0", "header" => "img1"),
[1] => array("id" => "4", "header" => "img4")
[2] => array("id" => "6", "header" => "img6")
)
如果我有$ ID =「4」,我怎樣才能提取索引[1],以獲得「報頭」值?
基本上我有此數組:查找多維數組索引
array(
[0] => array("id" => "0", "header" => "img1"),
[1] => array("id" => "4", "header" => "img4")
[2] => array("id" => "6", "header" => "img6")
)
如果我有$ ID =「4」,我怎樣才能提取索引[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'];
}
}
數組在PHP實際上是哈希表的背後場景,所以按鍵訪問元素非常快。如果可以的話,就像在其他答案中已經提到的那樣,改變數組在源處創建的方式,以使用id
(我認爲它是唯一的)作爲關鍵字。
改變你目前的陣列由id
進行索引,您可以使用此代碼:
$indexed = array();
foreach($array as $element) {
$indexed[$element['id']] = $element['header'];
}
// $indexed now resembles id => header
然後,您可以訪問使用$indexed[$id]
在固定時間內header
值。
其中$ index是要使用的ID。 – pthurmond
我不能只獲得0,1或2的值嗎? – Xriuk
當然,只要你有一種方法可以知道要使用哪個索引,那麼索引是什麼並不重要。 – pthurmond