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,
),
)