Задать вопрос
@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%']
];
  • Вопрос задан
  • 204 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽