在foreach循环中创建多维数组

时间:2019-07-05 07:51:34

标签: php arrays

我有45个元素的数组。我需要从中制造多维数组。 看起来像这样:

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提出的解决方案,看起来效果很好。感谢您的帮助和时间

2 个答案:

答案 0 :(得分:3)

尝试一下。

$j = -1;
$newArray = [];
foreach($items as $item){
    if ($item['SUBMODEL_NAME']) {
        $j++;
    }
    $newArray [$j][] = $item ;
}

答案 1 :(得分:1)

另一种方法-

"vg rira unaqyrf fcnprf, fcrpvny punenpgref nf , # naq PNCF"

演示: https://3v4l.org/3aTgR