У меня есть условная функция, выполнение которой не выполняется согласно бизнес-требованиям, и которая требует преобразования как с желаемым результатом. Эта функция содержит ранжирование и частоту, которые являются частью многомерного массива, и их суммирование на основе некоторых вычислений
Я хочу добавить частоту на основе позиции ранжирования, выполнение которой частично выполняется не точно. не могли бы вы помочь мне.
<?php
$arr = array (
'AMXB 5321' => array(
array("course_title_code" => "AMB 5321",
"content" => "Course",
"total" => "303",
"count" => "85",
"ranking" => array(array(5),array(2,4,5)),
"frequency" => array(array(5),array(1,2,11))),
array("course_title_code" => "AMB 5321",
"content" => "Succeed in the course",
"total" => "300",
"count" => "85",
"ranking" => array(array(3,5),array(3,4,5)),
"frequency" => array(array(1,4),array(1,2,11))
)
));
array_walk($arr, function(&$v,$k){
foreach($v as $key => &$s){
$s['ranking'] = implode(',',range(1,5));
foreach($s['frequency'] as $key => &$value){
$temp = $value;
$value = (count($value) == 5) ? $value : array_merge(array_fill(0, 5 - count($value), 0), $temp);
if($key == 1){
for($i=0;$i<count($value);$i++){
$value[$i] += $s['frequency'][$key-1][$i];
}
$temFormat = implode(',',$s['frequency'][1]);
}
}
unset($s['frequency']);
$s['frequency'] = $temFormat;
}
});
echo "<pre>";
print_r($arr);
?>
Желаемый результат
Array
(
[AMXB 5321] => Array
(
[0] => Array
(
[course_title_code] => AMB 5321
[content] => Course
[total] => 303
[count] => 85
[ranking] => 1,2,3,4,5
[frequency] => 0,1,0,2,16
)
[1] => Array
(
[course_title_code] => AMB 5321
[content] => Succeed in the course
[total] => 300
[count] => 85
[ranking] => 1,2,3,4,5
[frequency] => 0,0,2,2,15
)
)
)