$data = [];
$data['set1'] = ['label1'=>'001', 'label2'=>'002'];
$data['set2'] = ['label1'=>'003', 'label2'=>'004'];
$data['set3'] = ['label1'=>'001', 'label2'=>'006'];
$data['set4'] = ['label1'=>'001', 'label2'=>'002'];
我想检查labelx
中任何setx
的值是否相同。我能想到的只是运行foreach
循环来比较一组与其余组合,一次一组。
是否有任何优雅的解决方案可以检查所有集合中的类似值而无需手动执行循环?
答案 0 :(得分:1)
array_column()和array_count_values()可以解决问题。
首先使用 array_column 将列值作为数组获取,然后使用 array_count_values 在数组中查找相同的值。
像这样:
<?php
$data = [];
$data['set1'] = ['label1'=>'001', 'label2'=>'002'];
$data['set2'] = ['label1'=>'003', 'label2'=>'004'];
$data['set3'] = ['label1'=>'001', 'label2'=>'006'];
$data['set4'] = ['label1'=>'001', 'label2'=>'002'];
$label1_values=array_column($data,'label1');
$label2_values=array_column($data,'label2');
print_r(array_count_values($label1_values));
print_r(array_count_values($label2_values));
?>
<强>输出:强>
Array
(
[001] => 3
[003] => 1
)
Array
(
[002] => 2
[004] => 1
[006] => 1
)