Nic*_*ero 24 php arrays multidimensional-array
我需要检查多维数组中是否存在值.我在Stackoverflow和PHP.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";
}
Run Code Online (Sandbox Code Playgroud)
如果检查FIRST数组(Array [0]
)的任何值是否存在,则IF语句不返回任何值.它确实与其他数组的值一起使用.100
首先尝试,然后尝试40489
(或尝试使用"名称"或"pic_square").
Ana*_*Die 65
您可以使用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";
}
?>
Run Code Online (Sandbox Code Playgroud)
输出: - https://eval.in/1058147
注意: - 如果您修改比较,您的代码也会起作用: -
if(array_search(100, array_column($userdb, 'uid')) !== false) {
echo "FOUND";
} else {
echo "Not Found";
}
Run Code Online (Sandbox Code Playgroud)
通过手册: - http://php.net/manual/en/function.array-search.php
它说: -
如果在数组中找到针,则返回针的键,否则返回FALSE.
php
处理0
的false
和1
为true
当谈到作为一个函数的返回值.这就是你的代码失败的原因,因为你的代码会返回0
.