Задать вопрос
StaDi
@StaDi
Курьер в it отделе

Посчитать повторяющиеся значения в переменной?

Проганы!
Мне не даёт покоя вопрос, у меня не получается как хочется просчитать вложенный массив.

Есть массив
$arr[] = array ("name" => "Название 1", "length" => 100, "count" => 15);
$arr[] = array ("name" => "Название 2", "length" => 99,  "count" => 5);
$arr[] = array ("name" => "Название 3", "length" => 99,  "count" => 3);
$arr[] = array ("name" => "Название 4", "length" => 100, "count" => 25);

Нужно на выходе получить массив с подсчитанным количеством(count) у равных длин (length), но что бы они не повторялись.

Т.е. так
array(
   array("length" => 100, "count" => 40)
   array("length" => 99,  "count" => 8)
)


Я уже задавал такой вопрос, спасибо всем кто откликнулся, но ответы не совсем соответствуют вопросу.
А моё решение, не соответствует хотелке.

Что я упускаю?
  • Вопрос задан
  • 2299 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
элементарно же
$arr = array();
$arr[] = array ("name" => "Название 1", "length" => 100, "count" => 15);
$arr[] = array ("name" => "Название 2", "length" => 99,  "count" => 5);
$arr[] = array ("name" => "Название 3", "length" => 99,  "count" => 3);
$arr[] = array ("name" => "Название 4", "length" => 100, "count" => 25);

$temp = array();
foreach ($arr as $item) {
  $temp[$item['length']] = isset($temp[$item['length']]) ?
    $temp[$item['length']] + $item['count'] :
    $item['count'];
}

$result = array();
foreach ($temp as $length => $count) {
  $result[] = array("length" => $length, "count" => $count);
}

print_r($result);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
He11ion
@He11ion
PHP-monkey
Сколько пхпшника не корми, а все равно велосипед напишет, вместо того, чтобы руководство почитать.

array_count_values(array_column($arr, 'length'));
Ответ написан
Ваш ответ на вопрос

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

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