采用这个简单的多维数组:
$images Array (
[0] => Array (
[image_id] => 18
[votes] => 12
)
[1] => Array (
[image_id] => 76
[votes] => 10
)
...
[n] => Array (
[image_id] => 2
[votes] => 1
)
)
在整个数组中搜索某个image_id
值的最佳方法是什么,然后在较大的数组中返回image_id
的位置,并返回相应的votes
同时? array_search()
的某些变体是否能够管理此内容?
目前,我正在使用foreach循环:
foreach ($images as $image) {
$i = 0;
if ($image['image_id'] == $someNeedle) {
$resultSet['image'] = $image;
$resultSet['position'] = $i;
return $resultSet;
}
$i++;
}
然而,这似乎过于复杂。是否有一个本机PHP函数可以加快这个/使我的代码更具语义?谢谢。
答案 0 :(得分:4)
我怀疑你会发现另一种更快,更清晰的方法。
foreach ($images as $position => $image) {
if ($image['image_id'] === $someNeedle) {
return compact('image', 'position');
}
}
答案 1 :(得分:0)
没有内置的方法可以准确地返回您想要的内容。你可以稍微简化一下,但不多:
foreach ($images as $key => $image) {
if ($image['image_id'] == $someNeedle) {
return array(
'image' => $image,
'position' => $key,
);
}
}
答案 2 :(得分:0)
使用您的数组key
代替i
,它会为您提供位置,它可以更快一点:
foreach ($images as $key=>$image) {
if ($image['image_id'] == $someNeedle) {
$resultSet['image'] = $image;
$resultSet['position'] = $key;
return $resultSet;
}
}
答案 3 :(得分:0)
array_search($needle, array_column($array, 'column'));
获得HCDINH的answer。