检查多维数组的任何子数组中的特定键上是否存在特定值

我需要在任何索引子数组中搜索多维数组中的特定值。

换句话说,我需要检查多维数组的单个列中是否有值。如果该值存在于多维数组中的任何位置,否则我想返回truefalse

$my_array = array(    
    0 =>  array(  
        "name"   => "john",  
        "id"    =>  4  
    ),  
    1   =>  array(  
        "name" =>  "mark",  
        "id" => 152  
    ), 
    2   =>  array(  
        "name" =>  "Eduard",  
        "id" => 152  
    )
);

我想知道检查数组是否包含键“id”的值的最快,最有效的方法。例如,如果在多维数组中的任意位置,我希望.$my_arrayid => 152true


答案 1

没有什么比一个简单的循环更快了。您可以混合和匹配一些数组函数来执行此操作,但它们也将作为循环实现。

function whatever($array, $key, $val) {
    foreach ($array as $item)
        if (isset($item[$key]) && $item[$key] == $val)
            return true;
    return false;
}

答案 2

** > 菲律宾比索 = 5.5

简单地你可以使用这个

$key = array_search(40489, array_column($userdb, 'uid'));

让我们假设这个多维数组:

$userdb=Array
(
(0) => Array
    (
        (uid) => '100',
        (name) => 'Sandra Shush',
        (url) => 'urlof100'
    ),

(1) => Array
    (
        (uid) => '5465',
        (name) => 'Stefanie Mcmohn',
        (pic_square) => 'urlof100'
    ),

(2) => Array
    (
        (uid) => '40489',
        (name) => 'Michael',
        (pic_square) => 'urlof40489'
    )
);

$key = array_search(40489, array_column($userdb, 'uid'));