Как превратить многомерный массив в индексированный массив взбитых значений? - PullRequest
0 голосов
/ 19 октября 2018

Я использую laravel 5. Я запросил список дат из этого оператора SQL:

//query tarikh tamat kursus                    
$datatarikhTamat = DB::table('itemregistrationdetail')
                  ->select('itemregistrationdetail.daytamat_kursus', 'itemregistrationdetail.monthtamat_kursus', 'itemregistrationdetail.yeartamat_kursus')
                  ->where('itemregistrationdetail.itemregistrationid', $id)
                  ->get();
$data = json_decode($datatarikhTamat, true); 

В декодированном запросе будут показаны эти выходные данные:

      array:4 [▼
      0 => array:3 [▼
      "daytamat_kursus" => 28
      "monthtamat_kursus" => "July"
      "yeartamat_kursus" => 2011
    ]
     1 => array:3 [▼
     "daytamat_kursus" => 27
     "monthtamat_kursus" => "0"
     "yeartamat_kursus" => 2013
    ]
    2 => array:3 [▼
     "daytamat_kursus" => 14
     "monthtamat_kursus" => "0"
     "yeartamat_kursus" => 2013
    ]
    3 => array:3 [▼
     "daytamat_kursus" => 11
     "monthtamat_kursus" => "April"
     "yeartamat_kursus" => 2014
     ]
    ]

день, месяц игод каждой даты из разных столбцов таблицы.Я хочу, чтобы эти даты были сгруппированы и отображены в таблице.Например: muldtidimensiarray из:

    array:12 [▼
   0 => "28 July 1022"
   1 => "27 0 2013"
   2 => "14 0 2013"
   3 => "11 April 2014"
    ]

можно сгруппировать, используя implode, чтобы превратить в строку «11 апреля 2014 года».

Я использовал этот код для взрыва массива, но это приводит кпо-разному.

//tarikh tamat kursus
    //**************** format the value of the date************************  
    $data = json_decode($datatarikhTamat, true); 

    $val_arr = array();

    foreach($data  as $val)
    {
        foreach($val as $key => $value)
        {
             $val_arr[] = $value;
        }
    }

    $dataTarikhTamat = implode("-", $val_arr);
    dd($val_arr);

Это приведет к следующему выводу:

 array:12 [▼
   0 => 28
   1 => "July"
   2 => 2011
   3 => 27
   4 => "0"
   5 => 2013
   6 => 14
   7 => "0"
   8 => 2013
   9 => 11
   10 => "April"
   11 => 2014
   ]

Как я могу изменить коды, чтобы получить индексированный массив дат?

1 Ответ

0 голосов
/ 19 октября 2018

Полагаю, вы зашли очень далеко в свои foreach() петли.Вы можете implode() данные на первом уровне массива:

$dates = json_decode($datatarikhTamat, true); 

$date_arr = array();

foreach($dates as $date)
{
    $date_arr[] = implode(' ', array_values($date));
}

Это должно привести к ожидаемому формату.Использование array_values() вернет только значения массива $date.

...