【问题标题】:PHP 2D Array Restructure, HASHxARRAY -> ARRAYxHASHPHP 2D 数组重组,HASHxARRAY -> ARRAYxHASH
【发布时间】:2012-02-14 02:17:56
【问题描述】:

我不认为这可以做到(没有我自己的功能),但我会问任何方式。

我在 PHP 中有一个数组,比如

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

各个字段来自网络表单

我想把它重新排列成下面的样子

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

从字段数组中创建一个对象数组

我可以写一个函数来做到这一点。

但是我想知道内置数组函数之一能否为我实现这一点?

【问题讨论】:

  • 不,没有内置函数可以进行这个特殊的转换。你可以拼凑一些现有的功能来让它们做到这一点......

标签: php arrays object multidimensional-array


【解决方案1】:

当然不是最有效的,但尽可能接近“一个功能”。 ;)

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

【讨论】:

  • 哦,如果没有 10 页关于它的作用的文档,请不要在生产中使用它。 ;)
【解决方案2】:

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

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;
}

See it working

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 2023-03-31
      • 1970-01-01
      • 2016-06-01
      • 2014-04-01
      相关资源
      最近更新 更多