我有这个多维数组:
阵 ( [0] =>排列 ( [id] => 0 [level] => 0 [%] => 0 )
[1] => Array
(
[id] => 236763
[percent] => 1
[name] => NAME1
)
[2] => Array
(
[id] => 73801
[percent] => 2
[name] => NAME2
)
[3] => Array
(
[id] => 73792
[percent] => 3
[name] => NAME3
)
[4] => Array
(
[id] => 63739
[percent] => 4
[name] => NAME4
)
[5] => Array
(
[id] => 63756
[percent] => 5
[name] => NAME5
)
[6] => Array
(
[id] => 63758
[percent] => 5
[name] => NAME6
)
[7] => Array
(
[id] => 63741
[percent] => 4
[name] => NAME7
)
[8] => Array
(
[id] => 63739
[percent] => 4
[name] => NAME4
)
我希望找到所有重复项,但输出必须是:
我在2周内搜索此解决方案,但没有任何作用......
我创建了这个解决方案,但它不是很好的代码:
$percent[2] = 50;
$percent[3] = 25;
$percent[4] = 12.5;
$percent[5] = 6.25;
$percent[6] = 3.125;
$percent[7] = 1.5625;
$percent[8] = 0.78125;
$percent[9] = 0.390625;
$percent[10] = 0.1953125;
$stat[0]['ped'] = 0;
$stat[0]['count'] = 0;
$stat[0]['percent'] = 0;
for ($i = 0; $i < $delka; $i++) {
$save = 0;
for ($a = 0; $a < (Count($stat)); $a++) {
if ($stat[$a]['ped'] == $ped[$i][id]) {
$fetch = $ped[$i][percent];
$hodnota = $percent[$fetch];
$stat[$a]['percent'] = $stat[$a]['percent'] + $hodnota;
$stat[$a]['count'] = $stat[$a]['count'] + 1;
$save = 1;
}
}
if ($save == 0) {
$len = Count ($stat);
$stat[$len]['ped'] = $ped[$i][id];
$stat[$len]['count'] = 1;
$stat[$len]['name'] = $ped[$i][name];
$fetch = $ped[$i][percent];
$hodnota = $percent[$fetch];
$stat[$len]['percent'] = $hodnota;
}
}
$suma = 0;
for ($i = 1; $i < Count($stat); $i++) {
$suma = $suma + $stat[$i]['count'];
}
抱歉我的英文不好,谢谢你的帮助。
答案 0 :(得分:1)
使用此代码:
<?php
function id_in_array($array, $id){
foreach($array as $k => $v){
if($v['id'] == $id){
return $k;
}
}
return false;
}
$array = array(
array(
'id' => 7,
'percent' => 5,
),
array(
'id' => 4,
'percent' => 5,
),
array(
'id' => 3,
'percent' => 5,
),
array(
'id' => 7,
'percent' => 5,
),
);
$out = array();
$dup_nbr = 0;
foreach($array as $k => $v){
$out_k = id_in_array($out, $v['id']);
if(is_int($out_k) && $out_k !== false){
$out[$out_k]['percent'] += $v['percent'];
$dup_nbr++;
}else{
$out[] = $v;
}
}
print_r($out); // Your output array with fused duplicates
print_r($dup_nbr); // Duplicates number