使用array_flatten时如何保持数组的键名

时间:2013-08-31 10:35:13

标签: php laravel laravel-4

在对象中使用Eloquent返回值并使用toArray它看起来像

array (size=1)
   0 => 
    array (size=5)
      'id' => int 60
      'Name' => string 'ttt' (length=3)
      'Age' => int 444
      'created_at' => string '2013-08-31 13:05:38' (length=19)
      'updated_at' => string '2013-08-31 13:05:38' (length=19)

我使用array_flatten来解决这个问题,但它取代了键名

 array (size=5)
 0 => int 60
 1 => string 'ttt' (length=3)
 2 => int 444
 3 => string '2013-08-31 13:05:38' (length=19)
 4 => string '2013-08-31 13:05:38' (length=19)

我需要保留关键名称吗?

2 个答案:

答案 0 :(得分:1)

假设您的数组位于$data,请使用:

$data = $data[0];

答案 1 :(得分:0)

使用这个简单的数组,您甚至可以使用以下内容“展平”它:

$result = $arr[0];

要展平更复杂的二维数组,请使用以下内容:

function nowItIsFlat( $arr ) {
  $output = Array();
  foreach( $arr as $key => $val ) {
    if( is_array( $val ) ) {
      $output = array_merge( $output, $val );
    } else {
      $output[$key] = $val;
    }
  }
  return $output;
}

显然,任何重复的密钥都会被覆盖。