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

How to turn multidimensional array to indexed array of imploded value?

我正在使用 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
     ]
    ]

每个日期的日、月、年来自table的不同列。 我想将这些日期组合在一起并显示在 table 中。例如: 的多维度数组:

    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
   ]

如何修改代码以获得日期的索引数组?

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

$dates = json_decode($datatarikhTamat, true); 

$date_arr = array();

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

这应该会产生预期的格式。使用 array_values() 只会 return $date 数组的值。