基本上我有这个数组:
array(
[0] => array("id" => "0", "header" => "img1"),
[1] => array("id" => "4", "header" => "img4")
[2] => array("id" => "6", "header" => "img6")
)
如果我有 $id = "4",我如何提取索引 [1] 以获得 "header" 值?
基本上我有这个数组:
array(
[0] => array("id" => "0", "header" => "img1"),
[1] => array("id" => "4", "header" => "img4")
[2] => array("id" => "6", "header" => "img6")
)
如果我有 $id = "4",我如何提取索引 [1] 以获得 "header" 值?
您将要为此执行一个 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'];
}
}
foreach ($array as $key => $value) {
if ($value['id'] == '4') {
echo $value['header'];
break;
}
}
id
存储起来会更好header
,例如:
array(
"0" => "img1",
"4" => "img4",
"6" => "img6",
);
PHP 中的数组实际上是幕后的哈希表,因此通过键访问元素非常快。如果可以,请更改在源处创建数组的方式以使用id
(我认为是唯一的)作为键,正如其他答案中已经提到的那样。
要将当前数组转换为由 索引id
,您可以使用以下代码:
$indexed = array();
foreach($array as $element) {
$indexed[$element['id']] = $element['header'];
}
// $indexed now resembles id => header
然后,您可以header
使用恒定时间访问值$indexed[$id]
。