转置2D阵列结构


Transpose 2D array structure

我认为这是不可能的(没有我自己的函数),但我会问任何方法。

我有一个类似的PHP数组

array(
  'item1' => array(
               'Hello',
               'Good',
               ),
  'item2' => array(
               'World',
               'Bye',
               ),
  )

单个字段来自网络表单

我想把它重新排列到下面的

array(
  array(
    'item1' => 'Hello',
    'item2' => 'World',
     ),
  array(
    'item1' => 'Good',
    'item2' => 'Bye',
     ),
  )

从场阵列中制作一个对象阵列

我可以写一个函数来做这件事。

然而,我想知道内置数组函数中的一个能为我实现这一点吗?

没有内置函数可以做到这一点,但这里有一个用户定义的函数:

function convert_array ($array) {
  $result = array();
  foreach ($array as $key => $inner) {
    for ($i = 0; isset($inner[$i]); $i++) {
      $result[$i][$key] = $inner[$i];
    }
  }
  return $result;
}

查看它的工作

当然不是最高效的,但尽可能接近"一个函数"。)

array_map(function ($i) use ($array) { return array_combine(array_keys($array), $i); }, call_user_func_array('array_map', array_merge(array(function () { return func_get_args(); }), $array)));

请参阅http://codepad.viper-7.com/xIn3Oq.

否。没有任何内置函数可以做到这一点。