如何搜索具有多个搜索条件的多维数组?

时间:2016-11-04 11:44:38

标签: php arrays multidimensional-array

我想在条件中使用两个值搜索多维数组中的键。

我知道如何使用单一搜索条件搜索多维数组:

$key = array_search($journee, array_column($data,'journee'));

但不止于此。这是我的阵列设置:

Array
(
    [0] => Array
        (
            [pseudo] => titi
            [journee] => 11
            [pts] => 3
        )

    ...
    [10] => Array
        (
            [pseudo] => test
            [journee] => 10
            [pts] => 6
        )

    [11] => Array
        (
            [pseudo] => test
            [journee] => 11
            [pts] => 4
        )

)

如果我只将11放入array_searcharray_column放入关键journee,则会返回0.

我也希望在搜索条件中添加pseudo(应搜索密钥journeepseudo以获取特定值。)

我将如何做到这一点?

1 个答案:

答案 0 :(得分:6)

只有一个简单的功能,它是不可能的。

这是两个

的解决方案
$search = ['pseudo' => 'test', 'journee' => 10];
$keys = array_keys(
    array_filter(
        $array,
        function ($v) use ($search) { return $v['pseudo'] == $search['pseudo'] && $v['journee'] == $search['journee']; }
    )
);
$key = $keys[0];

但如果您只需要找到一个键,我建议您使用foreach& break,因为您不必遍历所有值数组(使用array_filter会发生什么)并在找到某些数据时立即停止:

$key = false;
$search = ['pseudo' => 'test', 'journee' => 10];
foreach ($array as $k => $v) {
    if ($v['pseudo'] == $search['pseudo'] && $v['journee'] == $search['journee']) {
        $key = $k;
        // key found - break the loop
        break;
    }
}