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)
)


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

Что я упускаю?
  • Вопрос задан
  • 2298 просмотров
Решения вопроса 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'));
Ответ написан
Ваш ответ на вопрос

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

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