Как правильно перебрать массив? - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь реализовать решение, чтобы найти МЕСЯЦ , который имеет наибольшее количество страниц.Кто-нибудь знает, как зациклить этот массив JSON, чтобы я мог, возможно, извлечь $ total за каждый месяц ($ total1, $ total2, $ total3, ... $ total12), а затем, возможно, добавить их в массив и затем найтимаксимальное число (имеется в виду месяц, в котором больше всего страниц)?

Так я пытаюсь до сих пор в течение одного месяца:

   foreach($my_array as $value){
                  foreach ($value->all_books as $all_book) {
                      foreach ($all_book->number_of_pages as $num_page) {
                        if ($num_page->number_of_books && $num_page->pages) {
                       $total += $num_page->number_of_books * $num_page->pages;
                      }
               }
          }
    }

1 Ответ

0 голосов
/ 20 сентября 2018

Вы можете посчитать количество страниц за месяц следующим образом:

$monthWisePageCount = array();
foreach($my_array as $value){
    $month = date('M', strtotime($value->datetime_status));
          if(!in_array($month, array_keys($monthWisePageCount))){
               $monthWisePageCount[$month]['count'] =  0;
               $monthWisePageCount[$month]['month'] =  date('F', strtotime($value->datetime_status));
          }
            foreach ($value->all_books as $all_book) {
                      foreach ($all_book->number_of_pages as $num_page) {
                        if ($num_page->number_of_books && $num_page->pages) {
                             $monthWisePageCount[$month]['count'] += $num_page->number_of_books * $num_page->pages;
                      }
               }
          }

    }
print_r($monthWisePageCount);

Результат будет выглядеть следующим образом

  Array
(
    [Mar] => Array
        (
            [count] => 900
            [month] => March
        )

    [Dec] => Array
        (
            [count] => 558
            [month] => December
        )

    [Oct] => Array
        (
            [count] => 280
            [month] => October
        )

)

Вы можете найти самый большой элемент, подобный этому:

    $largestKey = '';
    $largestCount = 0 ; 
    foreach($monthWisePageCount as $key => $item){
           if($item['count'] > $largestCount ) {
               $largestCount = $item['count'];
                $largestKey =   $key;
           }
    }
 $monthWithLargestPageCount = $monthWisePageCount[$largestKey];
 print_r($monthWithLargestPageCount);

Результат будет таким

Array ( [count] => 900 [month] => March )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...