You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:15:42