猿问

如何将单元素关联数组重组为分组子数组?

我有一个关联数组:


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'];

    }

}

但它重复最后一个索引两次。IE


Array ( 

[0] => Array ( [term_title] => blue, [color_quantity] => 3, [color_price] => 33 ) 

[1] => Array ( [term_title] => blue, [color_quantity] => 3, [color_price] => 33 ) )


跃然一笑
浏览 107回答 2
2回答

慕桂英4014372

如果您喜欢语言结构和基本算术,那么您可以简单地遍历数组,除以 3 并将该浮点值用作第一级键——php 会自动将该floor()值形成一个整数代码:foreach ($array as $index => $subarray) {    $key = key($subarray);    $result[intdiv($index, 3)][$key] = $subarray[$key];}var_export($result);或者,如果您更喜欢函数式语法(我经常这样做),您可以形成子数组组,然后合并/展平这些组。下面的技术不需要声明变量$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,  ),)

陪伴而非守候

不确定 and 是从哪里name进来value的$data['name'],$data['value']但是您可以使用array_chunk它们将它们分成块并将它们分配给$posts。<?php$posts = array();foreach(array_chunk($field_data,3) as $data){    $temp = [];    foreach($data as $field){        foreach($field as $key => $value){            $temp[$key] = $value;        }    }    $posts[] = $temp;}print_r($posts);
随时随地看视频慕课网APP
我要回答