@Shamsudin
Программист

Как рассчитать, сколько процентов составляют элементы массива относительно их суммы?

Сейчас так:

$a = [
        ['id' => 1, 'name' => 'Laravel', 'price' => 1000],
        ['id' => 2, 'name' => 'Laravel 2', 'price' => 300],
        ['id' => 3, 'name' => 'Laravel 3', 'price' => 150],
        ['id' => 4, 'name' => 'Laravel 4', 'price' => 50]
];

А надо, чтобы стало примерно примерно так:

$a = [
        ['id' => 1, 'name' => 'Laravel', 'price' => 1000, 'weight' => '50%'],
        ['id' => 2, 'name' => 'Laravel 2', 'price' => 300, 'weight' => '30%'],
        ['id' => 3, 'name' => 'Laravel 3', 'price' => 150,'weight' => '15%'],
        ['id' => 4, 'name' => 'Laravel 4', 'price' => 50, 'weight' => '5%']
];
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
0xD34F
@0xD34F
$sum = array_sum(array_column($arr, 'price'));
foreach ($arr as &$n) {
  $n['weight'] = number_format($n['price'] / $sum * 100, 2).'%';
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Bone
Примерно так
$collection = collect($a);
$total = $collection->sum('price');
$a = $collection->map(static fn(array $item) => $item + ['weight' => $item['price'] / $total * 100])->toArray();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы