[英]Create multidimensional array in foreach loop
我有45个元素的数组。 我需要从它制作multidimensiona数组。 这是它的样子:
Array45: [
0 => {
+'MODEL': "AAA"
+'PRICE': 12.00
+'SUBMODEL_NAME': "abc"
}
1 => {
+'MODEL': "AAA"
+'PRICE': 12.00
+'SUBMODEL_NAME': ""
}
2 => {
+'MODEL': "BBB"
+'PRICE': 12.00
+'SUBMODEL_NAME': "bcd"
}
3 => {
+'MODEL': "AAA"
+'PRICE': 12.00
+'SUBMODEL_NAME': ""
}
]
现在:如果记录没有“SUBMODEL_NAME”,我需要将其放在一个包含“SUBMODEL_NAME”的记录的数组中。 在这种情况下,它应该看起来像:
Array: [
0 => [
0 => {
+'MODEL': "AAA"
+'PRICE': 12.00
+'SUBMODEL_NAME': "abc"
}
1 => {
+'MODEL': "AAA"
+'PRICE': 12.00
+'SUBMODEL_NAME': ""
}
1 => [
0 => {
+'MODEL': "BBB"
+'PRICE': 12.00
+'SUBMODEL_NAME': "bcd"
}
1 => {
+'MODEL': "AAA"
+'PRICE': 12.00
+'SUBMODEL_NAME': ""
}
]
等等
我在foreach循环中,我尝试将没有SUBMODEL_NAME的所有下一条记录放到之前,但是我被卡住了。 它是这样的:
$j = -1;
$newArray = [];
foreach($items as $item){
if ($index->SUBMODEL_NAME) {
$j++;
$newArray [$j][] = $index ;
}
}
编辑谢谢大家的帮助! 我实现了@ user1309690提出的soulution,它看起来很完美。 谢谢你的帮助和时间
试试这个。
$j = -1;
$newArray = [];
foreach($items as $item){
if ($item['SUBMODEL_NAME']) {
$j++;
}
$newArray [$j][] = $item ;
}
另一种方法 -
$result = [];
foreach($array as $k=>$v){
$i=0;
if($v['SUBMODEL_NAME']==''){
$i++;
$k = $k-1;
}
$result[$k][$i]= $v;
}
$result = array_values($result);
print_r($result);
演示: https : //3v4l.org/3aTgR
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.