0

基本上我有这个数组:

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

如果我有 $id = "4",我如何提取索引 [1] 以获得 "header" 值?

4

3 回答 3

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'];
  }
}
于 2013-09-16T18:22:53.227 回答
0
foreach ($array as $key => $value) {
    if ($value['id'] == '4') {
        echo $value['header'];
        break;
    }
}

id存储起来会更好header,例如:

array(
    "0" => "img1",
    "4" => "img4",
    "6" => "img6",
);
于 2013-09-16T18:19:09.837 回答
0

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

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

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

然后,您可以header使用恒定时间访问值$indexed[$id]

于 2013-09-16T18:30:45.247 回答