This question already has answers here:
How to sum all column values in multi-dimensional array?
(18个答案)
How to merge two arrays by summing the merged values [duplicate]
(4个答案)
5年前关闭。
如果
我试图通过经典的“从包含10亿行搜索请求的文档中生成前100个搜索请求”
我的方法是使用unix
编辑
例如
我如何将两者组合成以下数组
(18个答案)
How to merge two arrays by summing the merged values [duplicate]
(4个答案)
5年前关闭。
如果
array_count_values($arr1)
和array_count_values($arr2)
具有相同值的元素,是否有一种有效的方法组合$arr1
和$arr2
的返回数组?我试图通过经典的“从包含10亿行搜索请求的文档中生成前100个搜索请求”
我的方法是使用unix
split
将文档分割成更小的文件,用array_count_values
计算每个文件中每个搜索词的出现次数,然后将所有这些文件缩减为一个单独的文件,该文件的列表按每个搜索查询的受欢迎程度降序排列。编辑
例如
$arr1 = array('kurt', 'curt', 'kurt', 'dave', 'krist');
$arr2 = array('dave' 'dave', 'krist', 'krist');
array_count_values($arr1) // ('kurt' => 2, 'curt'=>1, 'dave'=>1, 'krist'=>1)
array_count_values($arr2) // ('dave' => 2, 'krist'=>2)
我如何将两者组合成以下数组
('kurt' => 2, 'dave'=>3, 'krist'=>3, 'curt'=>1)
最佳答案
试试这个:
$arr1 = array('kurt', 'curt', 'kurt', 'dave', 'krist');
$arr2 = array('dave', 'dave', 'krist', 'krist');
$cnt_arr1 = array_count_values($arr1); // ('kurt' => 2, 'curt'=>1, 'dave'=>1, 'krist'=>1)
$cnt_arr2 = array_count_values($arr2); // ('dave' => 2, 'krist'=>2)
$res_arr = array_merge_recursive($cnt_arr1,$cnt_arr2);
$res = array();
foreach($res_arr as $key=>$val){
if(is_array($val)){
$res[$key]= array_sum($val);
}else{
$res[$key]= $val;
}
}
echo "<pre>";
print_r($res);
10-07 19:38