对多维数组使用array_search

2022-08-30 13:28:19

在一维数组中使用array_search很简单

$array = array("apple", "banana", "cherry");
$searchValue = "cherry";
$key = array_search($searchValue, $array);

echo $key;

但是多维数组怎么样?

    #RaceRecord

    [CarID] [ColorID] [Position]
[0]    1        1         3
[1]    2        1         1
[2]    3        2         4
[3]    4        2         2
[4]    5        3         5

例如,我想得到位置为1的汽车的索引。我该怎么做?


答案 1

在 php 5.5.5 及更高版本中,您可以尝试此操作

$array_subjected_to_search =array(
array(
        'name' => 'flash',
        'type' => 'hero'
    ),

array(
        'name' => 'zoom',
        'type' => 'villian'
    ),

array(
        'name' => 'snart',
        'type' => 'antihero'
    )
);
$key = array_search('snart', array_column($array_subjected_to_search, 'name'));
var_dump($array_subjected_to_search[$key]);

输出:

array(2) { ["name"]=> string(5) "snart" ["type"]=> string(8) "antihero" }

工作样本 : http://sandbox.onlinephpfunctions.com/code/19385da11fe0614ef5f84f58b6dae80bd216fc01

在此处找到有关array_column的文档


答案 2
function find_car_with_position($cars, $position) {
    foreach($cars as $index => $car) {
        if($car['Position'] == $position) return $index;
    }
    return FALSE;
}