我需要在一个多维数组中搜索任何索引子数组中的特定值。
换句话说,我需要检查多维数组的一列中是否有值。如果该值存在于多维数组中的任何位置,我希望返回true
,否则返回false
$my_array = array(
0 => array(
"name" => "john",
"id" => 4
),
1 => array(
"name" => "mark",
"id" => 152
),
2 => array(
"name" => "Eduard",
"id" => 152
)
);
我想知道检查数组$my_array
是否包含键为"id“的值的最快、最有效的方法。例如,如果在多维数组中的任何位置使用id => 152
,我希望使用true
。
发布于 2011-08-09 10:43:38
没有什么比简单的循环更快的了。你可以混合搭配一些数组函数来做这件事,但它们也会被实现为一个循环。
function whatever($array, $key, $val) {
foreach ($array as $item)
if (isset($item[$key]) && $item[$key] == $val)
return true;
return false;
}
发布于 2015-03-24 21:19:30
以下是Dan Grossman的答案的更新版本,它将迎合多维数组(我想要的):
function find_key_value($array, $key, $val)
{
foreach ($array as $item)
{
if (is_array($item) && find_key_value($item, $key, $val)) return true;
if (isset($item[$key]) && $item[$key] == $val) return true;
}
return false;
}
发布于 2016-06-21 12:02:22
** PHP >= 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'));
https://stackoverflow.com/questions/6990855
复制相似问题