如何检查多维数组的任何子数组中的特定键是否存在特定值?
如何检查多维数组的任何子数组中的特定键是否存在特定值?
我需要在任何索引的子数组中搜索一个多维数组中特定的值。
换句话说,我需要检查多维数组的单个列是否存在某个值。如果该值在多维数组中的任何位置存在,我希望返回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。
问题的出现原因:在多维数组中检查特定键的特定值是否存在,需要找到一个简单、高效的解决方法。
解决方法:
1. 使用array_column()
函数来获取多维数组中指定键的值,返回一个包含指定键值的一维数组。
2. 使用array_search()
函数在一维数组中查找特定值,如果找到则返回该值的键,否则返回false。
3. 使用$key !== false
或$key === false
来确定array_search()
是否找到了符合条件的数据。
下面是使用PHP代码实现以上解决方法的示例:
// 定义一个多维数组 $userdb = array( array( 'uid' => '100', 'name' => 'Sandra Shush', 'url' => 'urlof100' ), array( 'uid' => '5465', 'name' => 'Stefanie Mcmohn', 'pic_square' => 'urlof100' ), array( 'uid' => '40489', 'name' => 'Michael', 'pic_square' => 'urlof40489' ) ); // 使用array_column()获取指定键的值 $uids = array_column($userdb, 'uid'); // 使用array_search()在一维数组中查找特定值 $key = array_search(40489, $uids); // 判断array_search()是否找到了符合条件的数据 if ($key !== false) { echo "特定值存在于多维数组中的子数组中,键为:" . $key; } else { echo "特定值不存在于多维数组中的任何子数组中"; }
运行以上代码,将输出特定值存在于多维数组中的子数组中,键为:2。
在多维数组的任何子数组中检查特定键的特定值是否存在的原因是,我们需要在多维数组中查找特定值,并确定该值存在的位置。这可以用于查找特定值的相关信息或执行其他操作。
为了解决这个问题,我们可以使用以下方法:
1. 创建一个多维数组,其中包含多个子数组,每个子数组都有一个键和一个值。
2. 使用array_column()函数获取所有子数组中特定键的值,并将结果存储在一个新的数组中。
3. 使用array_search()函数在新数组中搜索特定值。
4. 如果array_search()函数返回的结果不是FALSE,则表示特定值在多维数组中存在,输出"FOUND!"。否则,输出"NOT FOUND!"。
以下是解决该问题的代码示例:
$my_array = array(
0 => array(
"name" => "john",
"id" => 4
),
1 => array(
"name" => "mark",
"id" => 152
),
2 => array(
"name" => "Eduard",
"id" => 152
)
);
if (array_search(152, array_column($my_array, 'id')) !== FALSE) {
echo 'FOUND!';
} else {
echo 'NOT FOUND!';
}
上述代码将输出"FOUND!",因为在多维数组的子数组中存在值为152的id键。
因此,通过使用array_column()和array_search()函数,我们可以轻松地在多维数组中检查特定值是否存在,并获取该值的键。
问题的出现原因:如何在多维数组的任何子数组中检查特定键是否存在特定值。
解决方法:
1. 可以使用一个简单的循环来解决该问题。可以使用一些数组函数进行混合和匹配,但它们实际上也会被实现为一个循环。
function whatever($array, $key, $val) { foreach ($array as $item) if (isset($item[$key]) && $item[$key] == $val) return true; return false; }
2. 如何获取找到的id的键号。例如,如果我们搜索`id = 152`,结果将是`1`、`2`。
Grossman