首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >推送子元素php中的条目

推送子元素php中的条目
EN

Stack Overflow用户
提问于 2019-04-11 18:50:29
回答 2查看 29关注 0票数 1

我有一个数组,$final_arr...which给出了下面的输出,然后我合并费用并创建一个新的数组。

代码语言:javascript
代码运行次数:0
运行
复制
Array
(
    [0] => Array
        (

            [originator] =>Wayne
            [niche] => Construction
            [fee]=>30
        )

    [1] => Array
        (

            [originator] =>Josh
            [niche] => Construction
            [fee]=>30
        )

   [2] => Array
        (

            [originator] => Wayne
            [niche] => Construction
            [fee]=>50
        )

   [3] => Array
        (

            [originator] => Josh
            [niche] => Construction
            [fee]=>70
        )
)

我使用下面的代码将它们合并:

代码语言:javascript
代码运行次数:0
运行
复制
$final_arr = array();

foreach($formEntries as $value){

    if(isset($final_arr[$value['originator']])){
        $final_arr[$value['originator']]['fee_potential'] += $value['fee_potential'];
    } else{
        $final_arr[$value['originator']] = $value;
        $data_orgin[] = $value['originator'];
    }
}

这给了我下面的输出,当I print_r($final_arr)时,所以现在的费用是总的,并且数组比以前更小。

代码语言:javascript
代码运行次数:0
运行
复制
Array
(
    [Wayne] => Array
        (

            [originator] =>Wayne
            [entries=> Construction
            [fee]=>80
        )

    [Josh] => Array
        (

            [originator] =>Josh
            [niche] => Construction
            [fee]=>100
        )


)

现在我想在子元素中推送这样的实体,但它不能很好地工作。

代码语言:javascript
代码运行次数:0
运行
复制
  Array
(
    [wayne] => Array
        (

            [originator] =>Wayne
            [niche] => Construction
            [fee]=>80
                    [sub]=>array(
                            Array
                            (
                                [1] => Array
                                    (

                                    [originator] =>Wayne
                                    [niche] => Construction
                                    [fee]=>30
                                  )



                                [2] => Array
                                    (

                                    [originator] => Wayne
                                    [niche] => Construction
                                    [fee]=>50
                                  )


                           )


                    )


        )

    [josh] => Array
        (

            [originator] =>Josh
            [niche] => Construction
            [fee]=>100 


             [sub]=>array(
                            Array
                            (
                                [1] => Array
                                    (

                                    [originator] =>josh
                                    [niche] => Construction
                                    [fee]=>30
                                  )



                                [2] => Array
                                    (

                                    [originator] => josh
                                    [niche] => Construction
                                    [fee]=>70
                                  )


                           )


                    )
        )


)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-11 18:58:35

您可以尝试这样在foreach循环中获取下面sub中的所有值

代码语言:javascript
代码运行次数:0
运行
复制
foreach ($formEntries as $value) {

    if (isset($final_arr[$value['originator']])) {
        $final_arr[$value['originator']]['fee_potential'] = (!empty($final_arr[$value['originator']]['fee_potential']) ? $final_arr[$value['originator']]['fee_potential'] : 0) + (!empty($value['fee_potential']) ? $value['fee_potential'] : 0);
    } else {
        $final_arr[$value['originator']] = $value;
        $data_orgin[]                    = $value['originator'];
    }
    $final_arr[$value['originator']]['sub'][] = $value; // new line for sub index
}

Demo

票数 2
EN

Stack Overflow用户

发布于 2019-04-11 18:56:50

只需再添加一行,将$value数组放入sub数组即可

代码语言:javascript
代码运行次数:0
运行
复制
$final_arr = array();

foreach($formEntries as $value){

    if(isset($final_arr[$value['originator']])){
        $final_arr[$value['originator']]['fee_potential'] += $value['fee_potential'];
    } else{
        $final_arr[$value['originator']] = $value;
        $data_orgin[] = $value['originator'];
    }
    // new line
    $final_arr[$value['originator']]['sub'][] = $value;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55630722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档