php多维数组分组
问题描述:
我有一个数组,其中包含服装Attributes
和Variations
,每个属性具有未知数量的变体。php多维数组分组
数组我是这样的......
array(
(int) 0 => array(
'Variation' => array(
'title' => '40 inch'
),
'Attribute' => array(
'title' => 'Size'
)
),
(int) 1 => array(
'Variation' => array(
'title' => '42 inch'
),
'Attribute' => array(
'title' => 'Size'
)
),
(int) 2 => array(
'Variation' => array(
'title' => 'Long'
),
'Attribute' => array(
'title' => 'Length'
)
),
(int) 3 => array(
'Variation' => array(
'title' => 'Short'
),
'Attribute' => array(
'title' => 'Length'
)
)
)
,我想组和重新排序它给这个
array(
(int) 0 => array(
'Attribute' => array(
'title' => 'Size',
),
'Variation' => array(
(int) 0 => array(
'title' => '40 inch',
),
(int) 1 => array(
'title' => '42 inch',
)
)
),
(int) 1 => array(
'Attribute' => array(
'title' => 'Length',
),
'Variation' => array(
(int) 0 => array(
'title' => 'Short',
),
(int) 1 => array(
'title' => 'Long',
)
)
),
)
任何帮助将非常感激。
编辑:
我设法非常简单地解决它像这样
$res=[];
foreach($test as $row){
$res[$row['Attribute']['title']][]=$row['Variation']['title'];
}
这给了我这个
array(
'Size' => array(
(int) 0 => '40 inch',
(int) 1 => '42 inch',
),
'Length' => array(
(int) 0 => 'Long',
(int) 1 => 'Short',
),
)
和那件事情我可以工作。 感谢大家的意见。 我upvoted所有的答案,但作为我只是一个新手在这里它不公开显示。
答
虽然index
S代表主阵列将是不同的,他可以帮助 -
$new= array();
foreach($var as $arr) {
$new[$arr['Attribute']['title']]['Attribute']['title'] = $arr['Attribute']['title'];
$new[$arr['Attribute']['title']]['Variation'][] = array('title' => $arr['Variation']['title']);
}
答
<?php
$old = array(
(int) 0 => array(
'Variation' => array(
'title' => '40 inch'
),
'Attribute' => array(
'title' => 'Size'
)
),
(int) 1 => array(
'Variation' => array(
'title' => '42 inch'
),
'Attribute' => array(
'title' => 'Size'
)
),
(int) 2 => array(
'Variation' => array(
'title' => 'Long'
),
'Attribute' => array(
'title' => 'Length'
)
),
(int) 3 => array(
'Variation' => array(
'title' => 'Short'
),
'Attribute' => array(
'title' => 'Length'
)
)
);
$new = array();
$attr = '';
$i = -1;
foreach ($old as $arr) {
if($attr != $arr['Attribute']['title']){
$attr = $arr['Attribute']['title'];
$i++;
}
$new[$i]['Attribute']['title'] = $arr['Attribute']['title'];
$new[$i]['Variation'][] = array('title' => $arr['Variation']['title']);
}
print_r($new);
?>
输出为:
Array
(
[0] => Array
(
[Attribute] => Array
(
[title] => Size
)
[Variation] => Array
(
[0] => Array
(
[title] => 40 inch
)
[1] => Array
(
[title] => 42 inch
)
)
)
[1] => Array
(
[Attribute] => Array
(
[title] => Length
)
[Variation] => Array
(
[0] => Array
(
[title] => Long
)
[1] => Array
(
[title] => Short
)
)
)
)
你没有提到你有什么尝试和在哪里面临错误。 – RJParikh
感谢大家的回答,我实际上解决了这个问题 $ res = []; foreach($ test as $ row){ \t $ res [$ row ['Attribute'] ['title']] [] = $ row ['Variation'] ['title']; } –