PHP未知键名的多维数组搜索:如何匹配值Michael
在PHP多维数组中未知键名时搜索指定值的子数组
嘿,这个需求很常见!要在不知道键名的情况下,从你的$userdb多维数组里找出所有包含值为Michael的子数组,咱们用PHP的数组函数就能轻松搞定,不用手动写嵌套循环那么麻烦。
实现步骤&代码
先把你的原数组放出来:
$userdb = array( array( 'uid' => '100', 'name' => 'Sandra Shush', 'pic_square' => 'abc.jpg' ), array( 'uid' => '5465', 'name' => 'Stefanie Mcmohn', 'pic_square' => 'Michael.jpg' ), array( 'uid' => '40489', 'name' => 'Michael', 'pic_square' => 'xyz.jpg' ) );
接下来用array_filter配合匿名函数过滤数组:
// 过滤出所有包含'Michael'值的子数组 $michaelMatches = array_filter($userdb, function($subarray) { // 检查子数组的所有值中是否存在'Michael' return in_array('Michael', $subarray); }); // 可选:如果需要重置数组索引(array_filter会保留原数组的键名) $michaelMatches = array_values($michaelMatches);
代码解释
array_filter会遍历$userdb里的每一个子数组,把符合回调函数条件的子数组保留下来。- 回调里的
in_array('Michael', $subarray)会检查当前子数组的所有值,不管键名是什么,只要有一个值等于Michael,这个子数组就会被保留。 - 最后用
array_values是为了把过滤后的数组重新索引成连续的数字键,避免原数组键名混乱的问题。
扩展:忽略大小写匹配
如果需要忽略大小写(比如匹配michael或者MICHAEL),可以稍微修改回调函数:
$michaelMatches = array_filter($userdb, function($subarray) { // 把所有值转成小写,再检查是否匹配 $lowercaseVals = array_map('strtolower', $subarray); return in_array(strtolower('Michael'), $lowercaseVals); });
运行上面的代码后,$michaelMatches就是你想要的结果,包含那两个符合条件的子数组。
内容的提问来源于stack exchange,提问作者shah rushabh
相关产品推荐
相关产品推荐

