Php 如何将单元素关联数组重新构造为分组子数组?

Php 如何将单元素关联数组重新构造为分组子数组?,php,arrays,multidimensional-array,grouping,Php,Arrays,Multidimensional Array,Grouping,我有一个关联数组: Array ( [0] => Array ( [term_title] => black ) [1] => Array ( [color_quantity] => 2 ) [2] => Array ( [color_price] => 22 ) [3] => Array ( [term_title] => blue ) [4] => Array ( [color_quantity] => 3 ) [5]

我有一个关联数组:

Array ( 
[0] => Array ( [term_title] => black ) 
[1] => Array ( [color_quantity] => 2 ) 
[2] => Array ( [color_price] => 22 ) 
[3] => Array ( [term_title] => blue ) 
[4] => Array ( [color_quantity] => 3 ) 
[5] => Array ( [color_price] => 33 ))
如何将其更改为:

Array ( 
[0] => Array ( [term_title] => black, [color_quantity] => 2, [color_price] => 22 ) 
[1] => Array ( [term_title] => blue, [color_quantity] => 3, [color_price] => 33 ) )
我尝试以下代码:

$post = array();
for($i = 0; $i < 2; $i++){
    foreach($feild_data as $data){
        $post[$i][$data['name']] = $data['value'];
    }
}
不确定$data['name']和$data['value']中的名称和值来自何处,但您可以使用将它们划分为块,并将它们分配给$posts

不确定$data['name']和$data['value']中的名称和值来自何处,但您可以使用将它们划分为块,并将它们分配给$posts


如果您喜欢语言构造和基本算法,那么您可以简单地在数组中循环,除以3并使用该浮点值作为第一级键-php将自动将该值设置为一个整数

代码:

或者,如果您喜欢函数语法,我经常这样做,您可以形成子数组组,然后合并/展平这些组。下面的技术不需要声明$result变量,可以编写为一行程序

代码:

这两种技术都提供以下输出:

array (
  0 => 
  array (
    'term_title' => 'black',
    'color_quantity' => 2,
    'color_price' => 22,
  ),
  1 => 
  array (
    'term_title' => 'blue',
    'color_quantity' => 3,
    'color_price' => 33,
  ),
)

如果您喜欢语言构造和基本算法,那么您可以简单地在数组中循环,除以3并使用该浮点值作为第一级键-php将自动将该值设置为一个整数

代码:

或者,如果您喜欢函数语法,我经常这样做,您可以形成子数组组,然后合并/展平这些组。下面的技术不需要声明$result变量,可以编写为一行程序

代码:

这两种技术都提供以下输出:

array (
  0 => 
  array (
    'term_title' => 'black',
    'color_quantity' => 2,
    'color_price' => 22,
  ),
  1 => 
  array (
    'term_title' => 'blue',
    'color_quantity' => 3,
    'color_price' => 33,
  ),
)

此更改背后的算法是什么?您的代码引用了一些不在输出中的内容-$post['item.'$i]、$data['name']和$data['value'],因此不确定您是如何实现输出的。我将$post['item.'$i]编辑为$post[$i],这是它的常规$数据也是一个数组,包含键和值作为名称和值。此数组来自于一个jQuery序列化数组form@mickmackusa,不确定dupe是否真的适合,在这种情况下,他们没有使用关联数组,因此我认为这将丢失所有键。此更改背后的算法是什么?您的代码引用了一些不在输出中的内容-$post['item.'$I],$data['name']和$data['value'],因此不确定您是如何实现输出的。我将$post['item.'$I]编辑为$post[$I],它是通用的$数据也是一个数组,包含键和值作为名称和值。此数组来自于一个jQuery序列化数组form@mickmackusa,不确定dupe是否真的适合,在这种情况下,他们没有使用关联数组,因此我认为这将丢失所有键。
foreach ($array as $index => $subarray) {
    $key = key($subarray);
    $result[$index / 3][$key] = $subarray[$key];
}
var_export($result);
var_export(
    array_map(
        function($v) {
            return array_merge(...$v);
        },
        array_chunk($array, 3)
    )
);
array (
  0 => 
  array (
    'term_title' => 'black',
    'color_quantity' => 2,
    'color_price' => 22,
  ),
  1 => 
  array (
    'term_title' => 'blue',
    'color_quantity' => 3,
    'color_price' => 33,
  ),
)