如何检查PHP数组中job_id键的取值差异及统计不同值数量
PHP数组:判断所有job_id是否一致&统计不同job_id数量
先把你的数组整理成更易读的格式:
$jobs = [ ['id' => 1, 'job_id' => 100], ['id' => 2, 'job_id' => 100], ['id' => 3, 'job_id' => 101] ];
1. 判断所有元素的job_id是否全部相同
最简洁的方式是先提取所有job_id,去重后判断数组长度是否为1:
// 提取所有job_id到新数组 $jobIds = array_column($jobs, 'job_id'); // 去重后长度为1则所有job_id相同 $allJobIdsSame = count(array_unique($jobIds)) === 1; // 测试示例数组的结果 var_dump($allJobIdsSame); // 输出 bool(false)
原理很简单:array_column直接从多维数组中取出指定键的值,array_unique会移除重复值。如果去重后的数组只有1个元素,说明原数组里所有job_id都一样。
如果你需要在遍历过程中提前终止(比如超大数组时节省性能),可以用array_reduce:
$allJobIdsSame = array_reduce($jobs, function($carry, $item) { static $firstJobId; // 第一次循环记录第一个job_id if ($firstJobId === null) { $firstJobId = $item['job_id']; return true; } // 后续循环对比,只要有不同就返回false,不再继续遍历 return $carry && ($item['job_id'] === $firstJobId); }, true);
2. 统计不同job_id的数量
同样基于提取的job_id数组,有两种常用方式:
方式一:去重后统计长度
$jobIds = array_column($jobs, 'job_id'); $uniqueJobIdCount = count(array_unique($jobIds)); var_dump($uniqueJobIdCount); // 输出 int(2)
方式二:统计每个job_id的出现次数(同时能看到频次)
用array_count_values可以得到每个job_id出现的次数,数组的长度就是不同job_id的数量:
$jobIds = array_column($jobs, 'job_id'); $jobIdFrequency = array_count_values($jobIds); $uniqueJobIdCount = count($jobIdFrequency); // 输出频次数组 print_r($jobIdFrequency); // 结果: // Array // ( // [100] => 2 // [101] => 1 // )
这种方式额外的好处是能知道每个job_id出现了多少次,适合需要更详细统计的场景。
内容的提问来源于stack exchange,提问作者Yogesh Saroya
相关产品推荐
相关产品推荐

