数组重组

memory_qian 2015-11-18 09:05:13
我想把如下数组 组合成一个多维数组,有没简单一点的方法 数组如下:

Array
(
[0] => Array
(
[category_id_one] => 57
[category_id_two] => 60
[category_id_three] => 63
[category_id_four] => 62
)

[1] => Array
(
[category_id_one] => 57
[category_id_two] => 60
[category_id_three] => 63
[category_id_four] => 64
)

[2] => Array
(
[category_id_one] => 57
[category_id_two] => 66
[category_id_three] => 91
[category_id_four] => 92
)

[3] => Array
(
[category_id_one] => 57
[category_id_two] => 66
[category_id_three] => 91
[category_id_four] => 92
)

)


...全文
164 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
有延时……………啊……
  • 打赏
  • 举报
回复
变几维啊 ??~…………
xuzuning 2015-11-18
  • 打赏
  • 举报
回复
大致就不好了
$a = array (
  0 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '60',
    'category_id_three' => '63',
    'category_id_four' => '62',
  ),
  1 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '60',
    'category_id_three' => '63',
    'category_id_four' => '64',
  ),
  2 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '66',
    'category_id_three' => '91',
    'category_id_four' => '92',
  ),
  3 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '66',
    'category_id_three' => '91',
    'category_id_four' => '92',
  ),
);

$r = array();
foreach($a as $v) {
  if(! isset($r[$v['category_id_one']]))
    $r[$v['category_id_one']] = array('id' => $v['category_id_one'], 'son' => array());
  $p =& $r[$v['category_id_one']];
  if(! isset($p['son'][$v['category_id_two']]))
    $p['son'][$v['category_id_two']] = array('id' => $v['category_id_two'], 'son' => array());
  $p =& $p['son'][$v['category_id_two']];
  if(! isset($p['son'][$v['category_id_three']]))
    $p['son'][$v['category_id_three']] = array('id' => $v['category_id_three'], 'son' => array());
  $p =& $p['son'][$v['category_id_three']];
  if(! isset($p['son'][$v['category_id_four']]))
    $p['son'][$v['category_id_four']] = array('id' => $v['category_id_four'], 'son' => array());
}
print_r($r);
Array
(
    [57] => Array
        (
            [id] => 57
            [son] => Array
                (
                    [60] => Array
                        (
                            [id] => 60
                            [son] => Array
                                (
                                    [63] => Array
                                        (
                                            [id] => 63
                                            [son] => Array
                                                (
                                                    [62] => Array
                                                        (
                                                            [id] => 62
                                                            [son] => Array
                                                                (
                                                                )

                                                        )

                                                    [64] => Array
                                                        (
                                                            [id] => 64
                                                            [son] => Array
                                                                (
                                                                )

                                                        )

                                                )

                                        )

                                )

                        )

                    [66] => Array
                        (
                            [id] => 66
                            [son] => Array
                                (
                                    [91] => Array
                                        (
                                            [id] => 91
                                            [son] => Array
                                                (
                                                    [92] => Array
                                                        (
                                                            [id] => 92
                                                            [son] => Array
                                                                (
                                                                )

                                                        )

                                                )

                                        )

                                )

                        )

                )

        )

)

memory_qian 2015-11-18
  • 打赏
  • 举报
回复
引用 1 楼 jordan102 的回复:
你并没有说明组成什么样的多维数组呀
你好, 下面有我想要的结果 这样可行吗...
memory_qian 2015-11-18
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
猜一下
$a = array (
  0 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '60',
    'category_id_three' => '63',
    'category_id_four' => '62',
  ),
  1 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '60',
    'category_id_three' => '63',
    'category_id_four' => '64',
  ),
  2 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '66',
    'category_id_three' => '91',
    'category_id_four' => '92',
  ),
  3 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '66',
    'category_id_three' => '91',
    'category_id_four' => '92',
  ),
);

foreach($a as $v) {
  $r[$v['category_id_one']][$v['category_id_two']][$v['category_id_three']] = $v['category_id_four'];
}
print_r($r);
Array
(
    [57] => Array
        (
            [60] => Array
                (
                    [63] => 64
                )

            [66] => Array
                (
                    [91] => 92
                )

        )

)

版主 你好, 你这个数组 category_id_three 对应 category_id_four 有62 和 64 而你的只显示出来了64 62覆盖掉了 我想把这2个都列出来
memory_qian 2015-11-18
  • 打赏
  • 举报
回复
引用 4 楼 xuzuning 的回复:
猜一下
$a = array (
  0 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '60',
    'category_id_three' => '63',
    'category_id_four' => '62',
  ),
  1 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '60',
    'category_id_three' => '63',
    'category_id_four' => '64',
  ),
  2 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '66',
    'category_id_three' => '91',
    'category_id_four' => '92',
  ),
  3 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '66',
    'category_id_three' => '91',
    'category_id_four' => '92',
  ),
);

foreach($a as $v) {
  $r[$v['category_id_one']][$v['category_id_two']][$v['category_id_three']] = $v['category_id_four'];
}
print_r($r);
Array
(
    [57] => Array
        (
            [60] => Array
                (
                    [63] => 64
                )

            [66] => Array
                (
                    [91] => 92
                )

        )

)


array(
	           [0]=>array(
	                [id]=>60,
	                ['son']=>array(
	                    [0]=>array(
	                        [id]=>63,
	                        [son]=>array(...)
	                    ),
	                    [1]=>array(
	                        [id]=>91,
	                        [son]=>array(...)
	                    )
	                )   
	           ),
	           [1]=>array(
	               [id]=>66,
	               [son]=>array()
	           )
	       )
	    

大致这样
xuzuning 2015-11-18
  • 打赏
  • 举报
回复
猜一下
$a = array (
  0 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '60',
    'category_id_three' => '63',
    'category_id_four' => '62',
  ),
  1 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '60',
    'category_id_three' => '63',
    'category_id_four' => '64',
  ),
  2 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '66',
    'category_id_three' => '91',
    'category_id_four' => '92',
  ),
  3 =>   array (
    'category_id_one' => '57',
    'category_id_two' => '66',
    'category_id_three' => '91',
    'category_id_four' => '92',
  ),
);

foreach($a as $v) {
  $r[$v['category_id_one']][$v['category_id_two']][$v['category_id_three']] = $v['category_id_four'];
}
print_r($r);
Array
(
    [57] => Array
        (
            [60] => Array
                (
                    [63] => 64
                )

            [66] => Array
                (
                    [91] => 92
                )

        )

)

一起混吧 2015-11-18
  • 打赏
  • 举报
回复
最后结果贴出来吧,这样容易理解一些。
memory_qian 2015-11-18
  • 打赏
  • 举报
回复
引用 1 楼 jordan102 的回复:
你并没有说明组成什么样的多维数组呀
category_id_one 是一级 category_id_four 是四级 这组这样的一个多维数组..
一起混吧 2015-11-18
  • 打赏
  • 举报
回复
你并没有说明组成什么样的多维数组呀

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧