Как изменить массив на основе значения в качестве ключа?
array(
array(
"name" => "BIBAR",
"cutoff" => 20220725,
"totals" => 5614
),
array(
"name" => "BIBAR",
"cutoff" => 20220810,
"totals" => 5614
),
array(
"name" => "BIBAR",
"cutoff" => 20220825,
"totals" => 5614
)
);
Я пробовал следующее, но это не работает:
foreach($cutoffs as $catoff) {
$ii = 0;
$sums[$ii][$catoff] = array_filter($array, function($val){
return $val['cutoff'] === $catoff ? $val['totals'] : $val;
});
$ii++;
}
Мой желаемый массив:
array(
'20221025' => array(
12345,
12343,
24442
),
'20221110' => array(
3443,
744334
)
)
Я застрял здесь на несколько часов ... Пожалуйста, помогите
Пожалуйста, используйте var_export()
вместо print_r()
для дампа.
function changeArr($data){
$new = [];
foreach ($data as $v){
$new[$v['cutoff']][] = $v['totals'];
}
return $new;
}
Пожалуйста, не просто выбрасывайте код в качестве ответа, всегда добавляйте объяснение того, в чем может быть проблема, и как ваш код решает проблему OP, чтобы другие могли учиться. Спасибо
ЕСЛИ «имя» не имеет значения, я думаю, что предыдущий ответ тоже подойдет. Если этот код «не работает», то ваше объяснение может быть неправильным, поэтому вам нужно либо объяснить лучше, либо привести нам больше примеров — имейте в виду, что в вашем примере ввод и вывод сильно отличаются — ввод, который вы дали, не работает. соответствовать вашему выводу.
Мой код:
$a = array(
array(
"name" => "BIBAR",
"cutoff" => 20220725,
"totals" => 5614
),
array(
"name" => "BIBAR",
"cutoff" => 20220810,
"totals" => 5614
),
array(
"name" => "BIBAR",
"cutoff" => 20220725,
"totals" => 1234
)
);
print_r($a);
echo "\n================================\n\n";
$newArr = [];
foreach ($a as $k => $vArr) {
// maybe some validation would be useful here, check if they keys exist
$newArr[$vArr['cutoff']][] = $vArr['totals'];
}
print_r($newArr);
Пожалуйста, проверьте и отредактируйте свой вопрос, форматирование выглядит нарушенным. Также подумайте о том, чтобы написать, что такое неожидаемый результат, просто «не работает» неполный. Смотрите также справочный центр.