php - 使用array_search和array_column检查多维数组中是否存在值,而不返回Array [0]的值

标签 php arrays multidimensional-array

我需要检查多维数组中是否存在值。我在StackoverflowPHP.NET上发现了这个示例,我喜欢它,因为它是一个优雅而紧凑的解决方案,但我注意到一个奇怪的行为:

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

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

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



if(array_search(100, array_column($userdb, 'uid'))) {
    echo "FOUND";
}

如果检查第一个数组(Array [0])的任何值是否存在,if语句不会返回任何值。它可以处理其他数组的值。先用100试试,然后用40489试试(或用“name”或“pic_square”试试)。

最佳答案

您可以使用下面的in_array()

<?php
$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'
    )
);
print_r(array_column($userdb, 'uid')); 
if(in_array(100, array_column($userdb, 'uid'))) { // search value in the array
    echo "FOUND";
}
?>

输出:-https://eval.in/1058147
注意:如果您按如下方式修改比较,代码也可以工作:
if(array_search(100, array_column($userdb, 'uid')) !== false) {
    echo "FOUND";
} else {
    echo "Not Found";
}

通过手册:-http://php.net/manual/en/function.array-search.php
它规定:
如果在数组中找到针,则返回该键,否则返回false。
php治疗0false1true。这就是您的代码失败的原因,因为您的代码返回0

关于php - 使用array_search和array_column检查多维数组中是否存在值,而不返回Array [0]的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38054669/

相关文章:

javascript - 访问 JSON 中的数组

c++ - boost::multi_array 示例的 pretty-print 失败

c++ - 从函数返回二维数组

php - 如何杀死一个PHP进程?

php - PHP 中特定表下默认对列表进行排序

php - 用于日期算术和比较的可移植 SQL

ios - Swift 中的算术运算符数组

ios - 为 UI 获取唯一值,同时保留重复项以在 map 上显示数据

python - 为什么我在尝试转换 np.array(some_list) ValueError : could not broadcast input array 时出错

php - 条件开关的问题