PHP如何找出关联数组中值相同的所有键?
在PHP中找出关联数组中值相同的所有键
当然有啦!在PHP里,你可以通过几种简单的方式实现这个需求,下面给你介绍最常用的几种方法:
方法1:使用array_keys()(最简洁推荐)
array_keys()函数本身就支持根据指定值返回对应的所有键,这是最直接高效的方式:
$data1 = array("Peter" => "1", "Ann" => "1", "Susan" => "2", "Tom"=> "3"); $targetValue = "1"; // 第二个参数传入要匹配的值,第三个参数可指定是否严格匹配(默认false) $result = array_keys($data1, $targetValue, true); print_r($result); // 输出:Array ( [0] => Peter [1] => Ann )
这里第三个参数true表示严格匹配(类型和值都要一致),如果你的值可能存在类型差异(比如数字1和字符串"1"),可以去掉这个参数进行松散匹配。
方法2:结合array_filter()和array_keys()(灵活扩展)
如果需要更复杂的匹配逻辑(比如值是数组、对象,或者需要自定义判断条件),可以先过滤出符合条件的元素,再提取键:
$data1 = array("Peter" => "1", "Ann" => "1", "Susan" => "2", "Tom"=> "3"); $targetValue = "1"; // 过滤出值等于目标值的元素 $filteredItems = array_filter($data1, function($value) use ($targetValue) { return $value === $targetValue; }); // 提取过滤后元素的键 $result = array_keys($filteredItems); print_r($result); // 输出同样是 Array ( [0] => Peter [1] => Ann )
方法3:手动遍历数组(适合理解基础逻辑)
如果你想更直观地理解整个过程,也可以通过循环遍历数组来实现:
$data1 = array("Peter" => "1", "Ann" => "1", "Susan" => "2", "Tom"=> "3"); $targetValue = "1"; $result = []; foreach ($data1 as $key => $value) { if ($value === $targetValue) { $result[] = $key; } } print_r($result); // 输出结果一致
总结
优先推荐使用array_keys()方法,因为它是PHP专门为这类场景设计的内置函数,代码简洁且性能最优。如果有特殊的匹配需求,再考虑使用array_filter()或者手动遍历的方式。
内容的提问来源于stack exchange,提问作者jiten2015
相关产品推荐
相关产品推荐

