如何将多维数组转换为内爆值的索引数组?

时间:2018-10-19 05:36:03

标签: laravel-5 multidimensional-array implode

我正在使用laravel5。我从此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分组为字符串“ 2014年4月11日”。

我曾经使用此代码内插到数组,但是结果却不同。

//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 :(得分:1)

我相信您在foreach()循环中走得很远。您可以implode()在数组第一级上的数据:

$dates = json_decode($datatarikhTamat, true); 

$date_arr = array();

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

这应该导致预期的格式。使用array_values()将仅返回$date数组的值。