在多维数组中查找索引

时间:2013-09-16 18:16:20

标签: php

基本上我有这个数组:

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

如果我有$ id =“4”,如何提取索引[1]以获得“标题”值?

3 个答案:

答案 0 :(得分: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'];
  }
}

答案 1 :(得分:0)

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

最好像这样存储idheader

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

答案 2 :(得分:0)

PHP中的数组实际上是幕后的哈希表,因此按键访问元素的速度非常快。如果可以,请更改在源处创建数组的方式,以使用id(我认为是唯一的)作为键,如其他答案中已提到的那样。

要将当前数组转换为id的索引,您可以使用以下代码:

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

然后,您可以使用header

在固定时间内访问$indexed[$id]个值
相关问题