Php 在foreach循环中创建多维数组

Php 在foreach循环中创建多维数组,php,arrays,Php,Arrays,我有45个元素的数组。我需要把它做成多维数组。 这就是它的样子: Array45: [ 0 => { +'MODEL': "AAA" +'PRICE': 12.00 +'SUBMODEL_NAME': "abc" } 1 => { +'MODEL': "AAA" +'PRICE':

我有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\u NAME”,我需要把它放在一个数组中,前面的记录有“SUBMODEL\u 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循环中,我试图将没有子模型名称的下一条记录放到previous,但我被卡住了。 是这样的:

$j = -1;
$newArray = [];

foreach($items as $item){

        if ($index->SUBMODEL_NAME) {
            $j++;
            $newArray [$j][] = $index ;
        }
  }
编辑 谢谢大家的帮助!我已经实现了@user1309690提出的解决方案,看起来效果非常好。感谢您的帮助和时间

试试这个

$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);

演示:

您可能需要更正标题Jakmen中的拼写。@Jakmen分组对我来说没有多大意义。您需要将那些具有子模型名称的元素放在没有子模型名称的元素之前。可以但是,为什么它们位于一个大小为2的单独子组中?另外,一个人如何符合输出中的任何单个子组的条件?