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

如何编写PHP函数searchArray实现多维数组按drop_mob_vnum搜索?

实现PHP多维数组搜索函数:根据指定字段值返回对应键名

没问题,我来帮你写出这个searchArray函数,咱们一步步来:

核心思路

我们需要遍历你的多维数组,逐个检查每个元素的drop_mob_vnum字段是否等于目标值$vnum,一旦匹配上,就把该元素的键名存入结果数组,最后返回这个结果数组。

完整函数代码

function searchArray($array, $vnum) {
    // 初始化空数组,用来存储匹配的键名
    $result = [];
    
    // 遍历原数组,同时获取每个元素的键和值
    foreach ($array as $key => $item) {
        // 先检查元素是否存在drop_mob_vnum字段,再判断值是否匹配
        if (isset($item['drop_mob_vnum']) && $item['drop_mob_vnum'] === $vnum) {
            $result[] = $key;
        }
    }
    
    return $result;
}

代码解释

  • 首先创建空数组$result,用来存放符合条件的键名
  • 使用foreach($array as $key => $item)遍历数组,这样既能拿到元素的键$key,也能拿到元素本身$item
  • 加入isset($item['drop_mob_vnum'])是为了避免数组中某个元素没有这个字段时触发PHP警告,让代码更健壮
  • 用严格相等===来判断值是否匹配,确保类型和值都一致(如果你的场景允许宽松匹配,也可以换成==)
  • 每找到一个匹配项,就把对应的键名$key追加到$result数组里
  • 遍历结束后返回结果数组

测试示例

假设你的多维数组是这样的:

$array = [
    8008 => ['drop_mob_vnum' => 50300, 'other_field' => 'xxx'],
    8009 => ['drop_mob_vnum' => 50300, 'other_field' => 'yyy'],
    8010 => ['drop_mob_vnum' => 50301, 'other_field' => 'zzz'],
];

调用searchArray($array, 50300)就会返回:

Array
(
    [0] => 8008
    [1] => 8009
)

完全符合你想要的结果~

内容的提问来源于stack exchange,提问作者zekephp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:57:08