【问题标题】:How to add arrays with the same months in a loop?如何在循环中添加具有相同月份的数组?
【发布时间】:2021-11-25 21:06:37
【问题描述】:

数组月份

array(8) { [0]=> string(2) "05" [1]=> string(2) "09" [2]=> string(2) "08" [3]=> string(2) "07" [4]=> string(2) "05" [5]=> string(2) "07" [6]=> string(2) "06" [7]=> string(2) "07" }


string(41) "["05","09","08","07","05","07","06","07"]"

月份的数组值

array(8) { [0]=> string(5) "20000" [1]=> string(5) "10000" [2]=> string(5) "10000" [3]=> string(5) "15000" [4]=> string(5) "10000" [5]=> string(5) "50000" [6]=> string(5) "10000" [7]=> string(5) "14000" }

string(65) "["20000","10000","10000","15000","10000","50000","10000","14000"]"

所以,我想添加同一个月的数字

05 => 20000
05 => 10000
06 => 10000
07 => 15000
07 => 50000
07 => 14000
08 => 10000
09 => 10000

期望的输出

string(106) "{"1":0,"2":0,"3":0,"4":0,"5":"30000","6":"10000","7":"79000","8":"10000","9":"10000","10":0,"11":0,"12":0}"

代码:

$mainarr = [];

foreach ($loans3rdChart as $key => $value) {

      for ($i=1; $i <=12 ; $i++) {

      if(!empty($mainarr[$i])){

        //$mainarr[$i]+=$value['y'];

      }else{

        if($i==$value['month_release']){

          $mainarr[$i] = $value['amount_granted'];

        }else{

          $mainarr[$i] = 0;

        }

      }

    }//end loop

  }

输出:

string(106) "{"1":0,"2":0,"3":0,"4":0,"5":"20000","6":"10000","7":"15000","8":"10000","9":"10000","10":0,"11":0,"12":0}"

请帮我解决这个问题。谢谢。

【问题讨论】:

    标签: php arrays laravel


    【解决方案1】:

    您的问题是,您没有考虑在第二次到达已经存在的月份时需要将其添加到现有值中......这是一个让您完成所有操作的示例:

    <?php
    $months = ["05","09","08","07","05","07","06","07"];
    $values = ["20000","10000","10000","15000","10000","50000","10000","14000"];
    foreach($months as $key => $month){
        if(!isset($newArray[$month])){
            $newArray[$month] = $values[$key];
        } else {
            $newArray[$month] = $newArray[$month] + $values[$key];
        }
    }
    for ($i=1; $i <=12 ; $i++) {
        if(strlen($i) == 1){
            $id = "0$i";
        } else {
            $id = $i;
        }
        if(!isset($newArray[$id])){
            $newArray[$id] = 0;
        }
    }
    ksort($newArray);
    print_r(json_encode($newArray));
    

    将返回:

    {"01":0,"02":0,"03":0,"04":0,"05":30000,"06":"10000","07":79000,"08":"10000","09":"10000","10":0,"11":0,"12":0}
    

    编辑 -- 我已经编辑了我的代码并添加了 0 以使每个月的数字为 2 个数字。

    只是想强调还有很多方法可以做到这一点! :)

    【讨论】:

    • 为什么值的类型不同?有些是字符串,有些是整数?
    • 键和值的类型必须是整数
    猜你喜欢
    • 1970-01-01
    • 2016-10-30
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多