Array
(
[0] => Array
(
[id] => 61
[title] => werwer
)
[1] => Array
(
[id] => 63
[title] => test
)
[2] => Array
(
[id] => 88
[title] => test 2
)
)
如何在没有循环的情况下获得上述类型数组中具有id=63
的标题。
答案 0 :(得分:1)
实际上,如果没有循环,你就无法做到这一点。这并不意味着你必须使用 loop (foreach / while e t.c.) - 但是使用数组函数你将在内部迭代数组。
例如,在PHP 5.5中:
$array = [
['id'=>63, 'title'=>'foo'],
['id'=>65, 'title'=>'bar']
];
//use this - if there are more than 2 connected to `id` fields:
$ids = array_flip(array_column($array, 'id'));//here is iteration, gathering id column
$result = $array[$ids[63]]['title'];
//or else, if `title` is always the only field:
$result = array_column($array, 'title', 'id')[63];
//var_dump($result);
- 等等。 array_search()
array_walk()
(或类似方式)将隐藏您的迭代,但无论如何都会完成。
答案 1 :(得分:0)
那么你可以尝试一些像这样的疯狂的东西
array_search(61,
array_combine(
array_map(function ($a) {
return $a['title'];
}, $arr),
array_map(function ($a) {
return $a['id'];
}, $arr)));
但是它非常无效(2个array_map,array_combine和array_search中有4个循环“隐藏”)。我建议使用循环 - 就像@JustAPirate写的那样。
$arr = array(array('id' => 61, 'title' => 'werwer'),
array('id' => 62, 'title' => 'asdasd'),
array('id' => 63, 'title' => 'qweqwe'),);
function f($arr, $id) {
foreach ($arr as $a) {
if ($a['id'] == $id)
return $a['title'];
}
}
var_dump(f($arr, 61));
答案 2 :(得分:-1)
如果您还不知道数组中id 63的索引,则无法在没有循环的情况下获取它。
foreach($array as $element) {
if($element['id'] == 63) {
echo $element['title'];
}
}
您可以更改数组的结构:
$array = array(61 => 'werwer', 63 => 'test', 88 => 'test 2');
这将导致:
Array
(
[61] => 'werwer'
[63] => 'test'
[88] => 'test 2'
)
然后你可以用$ array [63]
访问/获取它