PHP生成所需格式的多维关联数组

PHP生成所需格式的多维关联数组,php,Php,我正试图将数据整理成所需的格式。基本上,我有一个列表,其中实体的子集可以有多个值,需要在列表中分组和迭代 给出以下示例: $entities = [ 0 => ['name' => 'a', 'type' => 'single'], 1 => ['name' => 'b', 'type' => 'single'], 2 => ['name' => 'c', 'type' => 'grouped'], 3 =&g

我正试图将数据整理成所需的格式。基本上,我有一个列表,其中实体的子集可以有多个值,需要在列表中分组和迭代

给出以下示例:

$entities = [
    0 => ['name' => 'a', 'type' => 'single'],
    1 => ['name' => 'b', 'type' => 'single'],
    2 => ['name' => 'c', 'type' => 'grouped'],
    3 => ['name' => 'd', 'type' => 'grouped'],
    4 => ['name' => 'e', 'type' => 'single'],
];

foreach ($entities as $entityKey => $entity) {

    if ($entity['type'] == 'single') {

        $array[] = ['name' => $entity['name']];
    }

    if ($entity['type'] == 'grouped') {

        // arbitrary number of items
        $items = [0 => 'apple', 1 => 'orange', 2 => 'banana'];

        foreach ($items as $itemKey => $item) {
            $array[] = ['name' => $entity['name']];
        }
    }
}

print_r($array);
如何生成输出:a、b、c、d、c、d、c、d、e,以便在将下一个实体插入数组之前,对“分组”类型的实体进行配对和迭代。具体而言:

Array
(
    [0] => Array
        (
            [name] => a
        )

    [1] => Array
        (
            [name] => b
        )

    [2] => Array
        (
            [name] => c
        )

    [3] => Array
        (
            [name] => d
        )

    [4] => Array
        (
            [name] => c
        )

    [5] => Array
        (
            [name] => d
        )

    [6] => Array
        (
            [name] => c
        )

    [7] => Array
        (
            [name] => d
        )

    [8] => Array
        (
            [name] => e
        )

)
这是一个有效的解决方案

$entities = [
    0 => ['name' => 'a', 'type' => 'single'],
    1 => ['name' => 'b', 'type' => 'single'],
    2 => ['name' => 'c', 'type' => 'grouped'],
    3 => ['name' => 'd', 'type' => 'grouped'],
    4 => ['name' => 'e', 'type' => 'single'],
];

$grouped = [];

foreach($entities as $entity){
    if($entity['type'] == 'grouped'){
        $grouped[] = $entity['name'];
    }
}

$f = 0;
foreach ($entities as $entity) {
    if ($entity['type'] == 'single') {
        $array[] = ['name' => $entity['name']];
    }
    if ($entity['type'] == 'grouped') {
        $items = [0 => 'apple', 1 => 'orange', 2 => 'banana'];
        for($i = 0; $i < count($items); $i++) {
            foreach($grouped as $grouped_item){
                if($f < count($items)*2){
                    $array[] = ['name' => $grouped_item];
                }
                $f++;
            }
        }
    }
}

print_r($array);
$entities=[
0=>['name'=>'a','type'=>'single'],
1=>['name'=>'b','type'=>'single'],
2=>['name'=>'c','type'=>'grouped'],
3=>['name'=>'d','type'=>'grouped'],
4=>['name'=>'e','type'=>'single'],
];
$分组=[];
foreach($实体作为$实体){
如果($entity['type']=='grouped'){
$grouped[]=$entity['name'];
}
}
$f=0;
foreach($实体作为$实体){
如果($entity['type']=='single'){
$array[]=['name'=>$entity['name']];
}
如果($entity['type']=='grouped'){
$items=[0=>apple',1=>orange',2=>banana'];
对于($i=0;$i<计数($items);$i++){
foreach($分组为$分组的\u项){
如果($f<计数($items)*2){
$array[]=['name'=>$grouped_item];
}
$f++;
}
}
}
}
打印(数组);

类型为
分组的
是否始终应在最终数组中显示3次?@GrumpySaysRestatemonica-否迭代次数根据“项目”的数量而定,但项目的数量也是任意的?这是如何确定的?@GrumpySaysRestatemonic是数据库查询的结果集。我在这里抽象了逻辑,以便更容易表达。