Intereting Posts
Необязательно включить в PHP Как заменить <p> <br> </ p> на конец строки, которая содержит пробелы, разрывы строк и табуляции? Regex? Заполнить флажок из массива Содержимое поля ввода для html.tpl.php в Drupal 7 Использование DOMXPath для замены узла при сохранении его положения Что называется «->» PHP-оператором и как вы это говорите при чтении кода вслух? Сохранение данных на стороне сервера по всему массиву клиентов CakePHP – Как разрешить доступ к определенным страницам без проверки подлинности Электронная почта HTML иногда отправляет исходный код Css и бутстрап в yii2 Санитарный ввод, но выход не так, как ожидалось Я продолжаю получать сообщение об ошибке на нашем сайте. Предупреждение: mysqli_real_escape_string () ожидает ровно 2 параметра, 1 задано в … изменить цвет кнопки на клик и оставаться таким же для остальной части времени? Лучший способ удалить строки mysql из html-страницы – удалить ссылку и php Можно безопасно использовать $ mysqli-> insert_id для назначения темы для публикации в сценарии форума?

В PHP найдите повторяющуюся запись в многомерном массиве, затем суммируйте значения в определенном ключе этого массива

У меня есть массив, который был создан из файла CSV. Массив содержит следующее. В основном это четыре строки и шесть столбцов. IE он многомерный.

Array ( [1] => Array ( [WBS Element] => 1234567.01 [Proj System Status] => [CY Actuals] => 579373 [ITD Actuals] => 696,609 [Overall Commitment] => [Overall Assigned] => 696,609 [CYSpent] => 579,373 ) [2] => Array ( [WBS Element] => 1234567.02 [Proj System Status] => [CY Actuals] => 86689 [ITD Actuals] => 86,689 [Overall Commitment] => [Overall Assigned] => 86,689 [CYSpent] => 86,689 ) [3] => Array ( [WBS Element] => 1234567.02.01 [Proj System Status] => [CY Actuals] => 10750 [ITD Actuals] => 86,689 [Overall Commitment] => [Overall Assigned] => 86,689 [CYSpent] => 86,689 ) [4] => Array ( [WBS Element] => 1234567.02.02 [Proj System Status] => [CY Actuals] => 22756 [ITD Actuals] => 86,689 [Overall Commitment] => [Overall Assigned] => 86,689 [CYSpent] => 86,689 ) ) 

Вы заметите, что один из моих ключей «WBS Element» имеет значение, в котором первые десять символов могут совпадать с другой строкой в ​​массиве. Я должен выполнить любую строку, в которой первые десять символов «WBS Element» совпадают и суммируют остальные столбцы вместе, чтобы результат был агрегированным массивом с одинаковыми столбцами, но без строк с совпадением первых десяти символов.

Надеюсь, это имеет смысл, чего я пытаюсь достичь. Я новичок, когда дело доходит до PHP, поэтому любая помощь будет оценена по достоинству. Я хочу, чтобы работала колонна, но я не могу найти массив для «сопоставления» ключей, а затем объединить их вместе, суммируя.

Заранее спасибо!

Solutions Collecting From Web of "В PHP найдите повторяющуюся запись в многомерном массиве, затем суммируйте значения в определенном ключе этого массива"

 $new_array = array(); foreach ($array as $row) { $key = substr($row['WBS Element'],0,10); $new_array[$key]['WBS Element'] = $key; // optional $new_array[$key]['Proj System Status'] += $row['Proj System Status']; $new_array[$key]['CY Actuals'] += $row['CY Actuals']; $new_array[$key]['ITD Actuals'] += $row['ITD Actuals']; // same for Overall Commitment, etc... } 

я прокручивал бы каждый массив и

  1. создать массив возможных 10-символьных совпадений
  2. если совпадение найдено, добавьте остальные столбцы в это соответствие

Это предполагает, что может быть несколько 10-символьных строк, которые могут совпадать:

 $stats = <your array from above> $output = array(); foreach($stats as $stat){ // first we create an element in the array so we can sum $key = substr($stat['WBS Element'], 0, 10); if (!array_key_exists($stat['WBS Element'], $output)){ $output[$key] = array(); } // sum up rest of columns based on $output[$key] // or simply create them if the if-statement was matched above $output[$key]['CYSpent'] += $stat['CYSpent']; // etc } 

это даст вам результат

 array( [10-char-key-1] => array( // columns ) [10-char-key-2] => array( // columns ) // etc )