繁体   English   中英

在foreach循环中创建多维数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM