У меня есть этот массив (гораздо дольше — только часть)
[366] => Array
(
[0] => 8
[1] => 7
[2] => 8
[3] => 9
[4] => 8
)
[367] => Array
(
[0] => 8
[1] => 9
[2] => 9
[3] => 10
[4] => 10
[5] => 9
[6] => 8
[7] => 9
[8] => 10
[9] => 10
[10] => 11
[11] => 10
[12] => 11
[13] => 11
[14] => 10
[15] => 9
[16] => 10
[17] => 8
[18] => 10
)
Ключи должны быть удержаны (есть идентификатор). Я хочу суммировать значения foreach (в этом примере значения являются поколениями). Таким образом, Поколение 8 считается 3 раза для 366.
Ожидайте для ID 366: 7 — 1x, 8 — 3x, 9 — 1x или
[366] => Array
(
[7] => 1
[8] => 3
[9] => 1
)
[367] => Array
(
[8] => 3
[9] => 5
[10] => 8
[11] => 3
)
Каждое предложение приветствуется и ценится!
Меня всегда останавливают с помощью цифровых клавиш или foreach … одного из кодов, которые я пробовал:
$outdams = array();
foreach ($dams as $key => $value) {
foreach ($value as $key2 => $value2) {
$index = $value2;
if (array_key_exists($index, $outdams)) {
$outdams[$index]++;
} else {
$outdams[$index] = 1;
}
}
}
проверьте этот код
<?php
$data = array(366=>array(8,7,8,8,9),
367=>array(8,9,13,14,17,14));
echo "<pre>"; print_r($data);
$response = array();
foreach ($data as $outerkey => $outerData){
foreach ($outerData as $innerkey => $innerData){
//echo "<pre>"; print_r($innerData);
if(array_key_exists($innerData, $response[$outerkey])){
$response[$outerkey][$innerData] ++;
}else{
$response[$outerkey][$innerData] = 1;
}
}
}
echo "<pre>"; print_r($response);
?>
Других решений пока нет …