为了账号安全,请及时绑定邮箱和手机立即绑定

在 foreach 循环中创建数组,其中包含来自另一个循环的子项

在 foreach 循环中创建数组,其中包含来自另一个循环的子项

PHP
守着一只汪 2022-06-17 16:23:57
基于存储在变量中的 XML 文件中的数据,$Xml我想创建一个具有自定义属性的新数组。我确实从一个 foreach 循环开始:foreach($Xml->Sequences->Sequence as $var=>$value) {    $MyObject[] = array(        "title"  => $value->SequenceName->__toString(),        "folder" => true    );}没关系。结果如下所示:Array(    [0] => Array        (            [title] => Folder1            [folder] => 1        )    [1] => Array        (            [title] => Folder2            [folder] => 1        ))该变量$Xml还包含子属性,我需要将它们插入到我的新数组中。期望的结果是:Array(    [0] => Array        (            [title] => Folder1            [folder] => 1            [children] => Array                (                    [0] => Array                        (                            [title] => Package1                        )                )        ))我不知道如何得到这个结果!在我看来,我需要启动另一个 foreach 循环来获取子属性并将它们存储在循环中当前元素的数组中。我确实使用了这样的代码,但是创建了一个新节点并且它没有存储在父节点中。foreach($Xml->Sequences->Sequence as $var=>$value) {    $MyObject[] = array(        "title"  => $value->SequenceName->__toString(),        "folder" => true,    );    foreach ($value->SequencePackages->Package as $a=>$b){        $MyObject[] = array(            "children" => array(array(                "title" => $b->PackageFolder->__toString(),            ))        );    }}我相信解决方案很简单,但我无法独自解决......谢谢您的支持。
查看完整描述

3 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

建立新的数组数据并将其添加到最后而不是每个阶段的主数组中会更容易......


$MyObject = [];

foreach($Xml->Sequences->Sequence as $var=>$value) {

    $newObject =array(

        "title"  => $value->SequenceName->__toString(),

        "folder" => true,

    );


    foreach ($value->SequencePackages->Package as $a=>$b){

        $newObject["children"][] = ["title" => $b->PackageFolder->__toString()];

    }

    $MyObject[] = $newObject;

}


查看完整回答
反对 回复 2022-06-17
?
长风秋雁

TA贡献1757条经验 获得超7个赞

用于创建数组的父循环的用户索引。


$MyObject[$var] = array(

        "title"  => $value->SequenceName->__toString(),

        "folder" => true

    );


$MyObject[$var]['children'][] = array(array(

                "title" => $b->PackageFolder->__toString(),

            ));


查看完整回答
反对 回复 2022-06-17
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

你需要做一些这样的事情。您需要使用父数组中的键并插入新值子 foreach($Xml->Sequences->Sequence as $var=>$value) {


$MyObject[] = array(

    "title"  => $value->SequenceName->__toString(),

    "folder" => true,

);


foreach ($value->SequencePackages->Package as $a=>$b){

    $MyObject[‘children’] = array(

            "title" => $b->PackageFolder->__toString(),


    );

}


}


查看完整回答
反对 回复 2022-06-17
  • 3 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信