如何编写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
相关产品推荐
相关产品推荐

