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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:02:50