Как объединить массив по совпадающим ключам, добавляя числовые значения другихPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как объединить массив по совпадающим ключам, добавляя числовые значения других

Сообщение Anonymous »

Мой первый пост здесь, хотя я годами собирал знания от вас, ребята. Я пытаюсь объединить следующий массив, в котором имена совпадают, но мне нужно сложить часы.

Все, что я пытаюсь сделать, дает сумасшедшие результаты или выдает ошибки, на которые я не могу найти ответы.
Пример массива:

Код: Выделить всё

Array (
[0] => Array (
[name] => Hunter
[hours] => 4.00 )
[1] => Array (
[name] => Hunter
[hours] => 4.00 )
[2] => Array (
[name] => Leon
[hours] => 8.00 )
[3] => Array (
[name] => Rowdy
[hours] => 8.00 )
[4] => Array (
[name] => Hunter
[hours] => 8.00 )
[5] => Array (
[name] => Lonnie
[hours] => 8.00 )
[6] => Array (
[name] => Leon
[hours] => 8.00 )
[7] => Array (
[name] => Gavin
[hours] => 8.00 )
)
Желаемый результат:

Код: Выделить всё

Array (
[0] => Array (
[name] => Hunter
[hours] => 16.00 )
[1] => Array (
[name] => Leon
[hours] => 16.00 )
[2] => Array (
[name] => Rowdy
[hours] => 8.00 )
[3] => Array (
[name] => Lonnie
[hours] => 8.00 )
[4] => Array (
[name] => Gavin
[hours] => 8.00 )
)
Этот код работает... вроде... Он добавляет первый экземпляр имени дважды. Таким образом, давая охотнику дополнительные 4 часа. Он также не удаляет повторяющиеся данные имени/часа.
Я собирался добавить array_pop($php_data_array) над разрывом;, но это вызывает ошибку : Неустранимая ошибка: Uncaught TypeError: Невозможно получить доступ к смещению строки типа в строке, и я не понимаю, почему. (Добавление любого кода внутри «if» приводит к возникновению этой ошибки)

Код: Выделить всё

while($entries=mysqli_fetch_assoc($get_time_sheets))
{
$php_data_array[] = $entries; // Adding to array
foreach($php_data_array as &$value){
if($value['name'] === $entries['name']){
$value['hours'] = $value['hours'] + $entries['hours'];
break; // Stop the loop after we've found the item
}
}
}
Будем благодарны за любую помощь! Вероятно, я упускаю из виду что-то простое и просто не вижу этого.

Подробнее здесь: https://stackoverflow.com/questions/790 ... es-of-othe
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»