php - увеличивает второе значение массива, если первое значение имеет соответствующую строку - PullRequest
0 голосов
/ 05 июня 2018

Я работаю над виджетом WordPress, чтобы вывести таблицу для определенного типа поста (Projects) с обязательными полями типа 2.Полученные данные "местоположение" и "сила".Я хочу добавить функцию, которая суммирует все переменные «power», которые отформатированы в виде чисел, если «местоположение» уже создано.

Например, если создаются 3 различных сообщения Projects:

"location"=> Winnipeg, MB "power"=>2, "location"=> Winnipeg, MB "power"=>5, "location"=> Saskatchewan, AB "power"=>2

Тогда я хочу, чтобы вывод был:

"location"=> Winnipeg, MB "power"=>7, "location"=> Saskatchewan, AB "power"=>2

Мой код:

<?php
$all_locations=array();
$all_projects=array();
while ( $the_query->have_posts() ):
  $the_query->the_post();
  global $post;
  $id = $post->ID;
  $project_location = get_field('location');
  $single_kilowatts = get_field('kilowatts');
  $single_location = $project_location['address'];
  array_push($all_locations, $single_location);
  $project_entry=array(
    $single_location,
    $single_kilowatts 
  );
    $project_entry = compact('single_location','single_power');
    array_push($all_projects, $project_entry);
endwhile;
$unique = array_unique($all_locations);
print_r($unique);
print_r($all_projects);
?>

Пока этовсе работает, и 2 последние строки будут напечатаны:

Array ( [0] => Winnipeg, MB [1] => Saskatchewan, AB)
Array ( [0] => Array ( [single_location] => Winnipeg, MB [total_kW] => 2 ) 
        [1] => Array ( [single_location] => Winnipeg, MB [total_kW] => 5 ) 
        [2] => Array ( [single_location] => Saskatchewan, AB [total_kW] => 2 ) )

После этого я полностью потерялся и не знаю, как выводить данные так, как я упоминал в начале.Должен ли я начать новый цикл while или использовать foreach?Как я могу наиболее эффективно структурировать свое заявление if?

Если у вас есть какие-либо ответы или советы по моему синтаксису, пожалуйста, дайте мне знать.Я младший разработчик, с небольшим пониманием php и очень рад услышать любые советы или хитрости.

1 Ответ

0 голосов
/ 05 июня 2018

Вы можете попробовать с приведенным ниже кодом:

$all_projects=array();
while ( $the_query->have_posts() ):
    $the_query->the_post();
    global $post;
    $id = $post->ID;
    $project_location = get_field('location');
    $single_kilowatts = get_field('kilowatts');
    $single_location = $project_location['address'];

    $all_projects[$project_location['address']] = (isset($all_projects[$project_location['address']]))?$all_projects[$project_location['address']] + $single_kilowatts : $single_kilowatts;

endwhile;
$unique = array_keys($all_projects);;
print_r($unique);
print_r($all_projects);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...