为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
跃然一笑 2023-04-21 15:57:29
我有一个关联数组: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'];    }}但它重复最后一个索引两次。IEArray ( [0] => Array ( [term_title] => blue, [color_quantity] => 3, [color_price] => 33 ) [1] => Array ( [term_title] => blue, [color_quantity] => 3, [color_price] => 33 ) )
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

如果您喜欢语言结构和基本算术,那么您可以简单地遍历数组,除以 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,

  ),

)


查看完整回答
反对 回复 2023-04-21
?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

不确定 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);


查看完整回答
反对 回复 2023-04-21
  • 2 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信