首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在php中自定义数组多维

在php中自定义数组多维
EN

Stack Overflow用户
提问于 2015-11-25 18:49:40
回答 1查看 42关注 0票数 0

我对数组多维有一个问题。我想对数组结果进行裁剪,如下所示:

代码语言:javascript
复制
> Array (
>     [data] => Array
>         (
>           [nmproduk] => ABRI
>           (
>             [0] => Array
>                 (
>                     [regional] => LAINNYA
>                     [nmproduk] => ABRI
>                     [daily_peserta] => 0
>                     [monthly_peserta] => 0
>                     [yearly_peserta] => 30
>                     [daily_kredit] => 
>                     [monthly_kredit] => 
>                     [yearly_kredit] => 1630000000
>                     [daily_premi] => 
>                     [monthly_premi] => 
>                     [yearly_premi] => 17285943
>                 )
> 
>             [1] => Array
>                 (
>                     [regional] => REGIONAL I
>                     [nmproduk] => ABRI
>                     [daily_peserta] => 46
>                     [monthly_peserta] => 46
>                     [yearly_peserta] => 330
>                     [daily_kredit] => 3738000000
>                     [monthly_kredit] => 3738000000
>                     [yearly_kredit] => 26872000000
>                     [daily_premi] => 38769646
>                     [monthly_premi] => 38769646
>                     [yearly_premi] => 286798366
>                 )
> 
>             [2] => Array
>                 (
>                     [regional] => REGIONAL III
>                     [nmproduk] => ABRI
>                     [daily_peserta] => 0
>                     [monthly_peserta] => 0
>                     [yearly_peserta] => 41
>                     [daily_kredit] => 
>                     [monthly_kredit] => 
>                     [yearly_kredit] => 3658000000
>                     [daily_premi] => 
>                     [monthly_premi] => 
>                     [yearly_premi] => 41277232
>                 )
>             [3] => Array
>                 (
>                     [regional] => REGIONAL IV
>                     [nmproduk] => ABRI
>                     [daily_peserta] => 0
>                     [monthly_peserta] => 0
>                     [yearly_peserta] => 66
>                     [daily_kredit] => 
>                     [monthly_kredit] => 
>                     [yearly_kredit] => 7040000000
>                     [daily_premi] => 
>                     [monthly_premi] => 
>                     [yearly_premi] => 82187930
>                 )
>           ),
>           [todal_daily_peserta] => 46,
>           [total_monthly_peserta] => 46,
>           [total_yearly_perserta] => 437,
>           [todal_daily_kredit] => ???,
>           [total_monthly_kredit] => ???,
>           [total_yearly_kredit] => ???,
>           [total_daily_premi] => ???,
>           [total_monthly_premi] => ???,
>           [total_yearly_premi] => ???,
>           
>           
>           [nmproduk] => PERCEPATAN
>           (
>           [4] => Array
>               (
>                   [regional] => LAINNYA
>                   [nmproduk] => PERCEPATAN
>                   [daily_peserta] => 0
>                   [monthly_peserta] => 0
>                   [yearly_peserta] => 1875
>                   [daily_kredit] => 
>                   [monthly_kredit] => 
>                   [yearly_kredit] => 219962745000
>                   [daily_premi] => 
>                   [monthly_premi] => 
>                   [yearly_premi] => 7006117997.375
>               )
> 
>           [5] => Array
>               (
>                   [regional] => REGIONAL I
>                   [nmproduk] => PERCEPATAN
>                   [daily_peserta] => 1
>                   [monthly_peserta] => 1
>                   [yearly_peserta] => 927
>                   [daily_kredit] => 75000000
>                   [monthly_kredit] => 75000000
>                   [yearly_kredit] => 115814199000
>                   [daily_premi] => 721455
>                   [monthly_premi] => 721455
>                   [yearly_premi] => 3950688767.026
>               )
> 
>           [6] => Array
>               (
>                   [regional] => REGIONAL II
>                   [nmproduk] => PERCEPATAN
>                   [daily_peserta] => 6
>                   [monthly_peserta] => 6
>                   [yearly_peserta] => 1040
>                   [daily_kredit] => 823200000
>                   [monthly_kredit] => 823200000
>                   [yearly_kredit] => 123555350000
>                   [daily_premi] => 32251012.84
>                   [monthly_premi] => 32251012.84
>                   [yearly_premi] => 4150526573.54
>               )
> 
>           [7] => Array
>               (
>                   [regional] => REGIONAL III
>                   [nmproduk] => PERCEPATAN
>                   [daily_peserta] => 5
>                   [monthly_peserta] => 5
>                   [yearly_peserta] => 3738
>                   [daily_kredit] => 330500000
>                   [monthly_kredit] => 330500000
>                   [yearly_kredit] => 436641012000
>                   [daily_premi] => 13093625.45
>                   [monthly_premi] => 13093625.45
>                   [yearly_premi] => 14251701550.695
>               )
> 
>           [8] => Array
>               (
>                   [regional] => REGIONAL IV
>                   [nmproduk] => PERCEPATAN
>                   [daily_peserta] => 92
>                   [monthly_peserta] => 92
>                   [yearly_peserta] => 7946
>                   [daily_kredit] => 11069000000
>                   [monthly_kredit] => 11069000000
>                   [yearly_kredit] => 911394600000
>                   [daily_premi] => 323911350.2000001
>                   [monthly_premi] => 323911350.2000001
>                   [yearly_premi] => 28520524406.100006
>               )
>           ),
>           [todal_daily_peserta] => 46,
>           [total_monthly_peserta] => 46,
>           [total_yearly_perserta] => 437,
>           [todal_daily_kredit] => ???,
>           [total_monthly_kredit] => ???,
>           [total_yearly_kredit] => ???,
>           [total_daily_premi] => ???,
>           [total_monthly_premi] => ???,
>           [total_yearly_premi] => ???
> 
>         )
> 
> )

如果上面的数组是错误的,也许这个表应该是错误的。每个产品名称在每一列中都有total (sum)。我不知道这是不是可能

代码语言:javascript
复制
product name : ABRI
country       | daily_peserta | daily_kredit | daily_premi | monthly_peserta | monthly_kredit | monthly_premi | yearly_peserta | yearly_kredit | yearly_premi |
LAINNYA       | 0             | ???          | ???         | ???             | ???            | ???           | ???            | ???           | ???          |
REGIONAL I    | 46            | ???          | ???         | ???             | ???            | ???           | ???            | ???           | ???          |
REGIONAL III  | 0             | ???          | ???         | ???             | ???            | ???           | ???            | ???           | ???          |
REGIONAL IV   | 0             | ???          | ???         | ???             | ???            | ???           | ???            | ???           | ???          |
TOTAL(SUM)    | 46            | ???          | ???         | ???             | ???            | ???           | ???            | ???           | ???          |

product name : PERCEPATAN
country       | daily_peserta | daily_kredit | daily_premi | monthly_peserta | monthly_kredit | monthly_premi | yearly_peserta | yearly_kredit | yearly_premi |
LAINNYA       | 0             | ???          | ???         | ???             | ???            | ???           | ???            | ???           | ???          |
REGIONAL I    | 46            | ???          | ???         | ???             | ???            | ???           | ???            | ???           | ???          |
REGIONAL III  | 0             | ???          | ???         | ???             | ???            | ???           | ???            | ???           | ???          |
REGIONAL IV   | 0             | ???          | ???         | ???             | ???            | ???           | ???            | ???           | ???          |
TOTAL(SUM)    | 46            | ???          | ???         | ???             | ???            | ???           | ???            | ???           | ???          |

但我得到的结果如下所示:

代码语言:javascript
复制
Array
(
    [data] => Array
        (
            [0] => Array
                (
                    [regional] => LAINNYA
                    [nmproduk] => ABRI
                    [daily_peserta] => 0
                    [monthly_peserta] => 0
                    [yearly_peserta] => 30
                    [daily_kredit] => 
                    [monthly_kredit] => 
                    [yearly_kredit] => 1630000000
                    [daily_premi] => 
                    [monthly_premi] => 
                    [yearly_premi] => 17285943
                )

            [1] => Array
                (
                    [regional] => REGIONAL I
                    [nmproduk] => ABRI
                    [daily_peserta] => 46
                    [monthly_peserta] => 46
                    [yearly_peserta] => 330
                    [daily_kredit] => 3738000000
                    [monthly_kredit] => 3738000000
                    [yearly_kredit] => 26872000000
                    [daily_premi] => 38769646
                    [monthly_premi] => 38769646
                    [yearly_premi] => 286798366
                )

            [2] => Array
                (
                    [regional] => REGIONAL III
                    [nmproduk] => ABRI
                    [daily_peserta] => 0
                    [monthly_peserta] => 0
                    [yearly_peserta] => 41
                    [daily_kredit] => 
                    [monthly_kredit] => 
                    [yearly_kredit] => 3658000000
                    [daily_premi] => 
                    [monthly_premi] => 
                    [yearly_premi] => 41277232
                )

            [3] => Array
                (
                    [regional] => REGIONAL IV
                    [nmproduk] => ABRI
                    [daily_peserta] => 0
                    [monthly_peserta] => 0
                    [yearly_peserta] => 66
                    [daily_kredit] => 
                    [monthly_kredit] => 
                    [yearly_kredit] => 7040000000
                    [daily_premi] => 
                    [monthly_premi] => 
                    [yearly_premi] => 82187930
                )

            [4] => Array
                (
                    [regional] => LAINNYA
                    [nmproduk] => PERCEPATAN
                    [daily_peserta] => 0
                    [monthly_peserta] => 0
                    [yearly_peserta] => 1875
                    [daily_kredit] => 
                    [monthly_kredit] => 
                    [yearly_kredit] => 219962745000
                    [daily_premi] => 
                    [monthly_premi] => 
                    [yearly_premi] => 7006117997.375
                )

            [5] => Array
                (
                    [regional] => REGIONAL I
                    [nmproduk] => PERCEPATAN
                    [daily_peserta] => 1
                    [monthly_peserta] => 1
                    [yearly_peserta] => 927
                    [daily_kredit] => 75000000
                    [monthly_kredit] => 75000000
                    [yearly_kredit] => 115814199000
                    [daily_premi] => 721455
                    [monthly_premi] => 721455
                    [yearly_premi] => 3950688767.026
                )

            [6] => Array
                (
                    [regional] => REGIONAL II
                    [nmproduk] => PERCEPATAN
                    [daily_peserta] => 6
                    [monthly_peserta] => 6
                    [yearly_peserta] => 1040
                    [daily_kredit] => 823200000
                    [monthly_kredit] => 823200000
                    [yearly_kredit] => 123555350000
                    [daily_premi] => 32251012.84
                    [monthly_premi] => 32251012.84
                    [yearly_premi] => 4150526573.54
                )

            [7] => Array
                (
                    [regional] => REGIONAL III
                    [nmproduk] => PERCEPATAN
                    [daily_peserta] => 5
                    [monthly_peserta] => 5
                    [yearly_peserta] => 3738
                    [daily_kredit] => 330500000
                    [monthly_kredit] => 330500000
                    [yearly_kredit] => 436641012000
                    [daily_premi] => 13093625.45
                    [monthly_premi] => 13093625.45
                    [yearly_premi] => 14251701550.695
                )

            [8] => Array
                (
                    [regional] => REGIONAL IV
                    [nmproduk] => PERCEPATAN
                    [daily_peserta] => 92
                    [monthly_peserta] => 92
                    [yearly_peserta] => 7946
                    [daily_kredit] => 11069000000
                    [monthly_kredit] => 11069000000
                    [yearly_kredit] => 911394600000
                    [daily_premi] => 323911350.2000001
                    [monthly_premi] => 323911350.2000001
                    [yearly_premi] => 28520524406.100006
                )

            [9] => Array
                (
                    [regional] => LAINNYA
                    [nmproduk] => SPK REGULER
                    [daily_peserta] => 13
                    [monthly_peserta] => 13
                    [yearly_peserta] => 309
                    [daily_kredit] => 606950000
                    [monthly_kredit] => 606950000
                    [yearly_kredit] => 25774340000
                    [daily_premi] => 32376923.700000003
                    [monthly_premi] => 32376923.700000003
                    [yearly_premi] => 1112584745.1232
                )

            [10] => Array
                (
                    [regional] => REGIONAL I
                    [nmproduk] => SPK REGULER
                    [daily_peserta] => 27
                    [monthly_peserta] => 27
                    [yearly_peserta] => 360
                    [daily_kredit] => 2154000000
                    [monthly_kredit] => 2154000000
                    [yearly_kredit] => 26114650000
                    [daily_premi] => 97020498.19
                    [monthly_premi] => 97020498.19
                    [yearly_premi] => 1076010850.1599998
                )

            [11] => Array
                (
                    [regional] => REGIONAL II
                    [nmproduk] => SPK REGULER
                    [daily_peserta] => 28
                    [monthly_peserta] => 28
                    [yearly_peserta] => 1116
                    [daily_kredit] => 2675000000
                    [monthly_kredit] => 2675000000
                    [yearly_kredit] => 135934580000
                    [daily_premi] => 91049751.98
                    [monthly_premi] => 91049751.98
                    [yearly_premi] => 5204907049.508249
                )

            [12] => Array
                (
                    [regional] => REGIONAL III
                    [nmproduk] => SPK REGULER
                    [daily_peserta] => 30
                    [monthly_peserta] => 30
                    [yearly_peserta] => 659
                    [daily_kredit] => 2397900000
                    [monthly_kredit] => 2397900000
                    [yearly_kredit] => 67650500000
                    [daily_premi] => 96396448.16399999
                    [monthly_premi] => 96396448.16399999
                    [yearly_premi] => 2981944555.2765
                )

            [13] => Array
                (
                    [regional] => REGIONAL IV
                    [nmproduk] => SPK REGULER
                    [daily_peserta] => 94
                    [monthly_peserta] => 94
                    [yearly_peserta] => 1646
                    [daily_kredit] => 10647200000
                    [monthly_kredit] => 10647200000
                    [yearly_kredit] => 220800200000
                    [daily_premi] => 440534803.87
                    [monthly_premi] => 440534803.87
                    [yearly_premi] => 9380550993.34
                )

        )

)

我没有使用任何框架,只使用原生php,因为我只是继续使用一个我不认识的人。下面是代码。

代码语言:javascript
复制
            $result          = query_db($querySelect);
            while ($getData = mysql_fetch_assoc($result))
            {
                $data['data'][] = $getData;
            }



            if($result)
            {
                foreach ($data as $row) {
                    $arr = array("regional" => $row["regional"],
                                                    "Nama Produk" => $row["nmproduk"],
                                                    "Daily Peserta" => $row["daily_peserta"]);
                }
                print_r($arr);
                exit();
                echo json_encode($arr);
            } else {
                $json['err_no'] = '1';
                $json['err_msg'] = 'Error occured. Please try again.';
                echo json_encode($json);

}

这是使用volkerk方法的结果,但我遇到了一个问题,如何汇总/求和所有daily_?价值

代码语言:javascript
复制
{
  "data": {
    "nmproduk": [
      {
        "nama produk": "ABRI",
        "regional": "LAINNYA",
        "daily peserta": "0"
      },
      {
        "nama produk": "ABRI",
        "regional": "LAINNYA",
        "daily kredit": null
      },
      {
        "nama produk": "ABRI",
        "regional": "LAINNYA",
        "daily premi": null
      },
      {
        "nama produk": "ABRI",
        "regional": "REGIONAL I",
        "daily peserta": "46"
      },
      {
        "nama produk": "ABRI",
        "regional": "REGIONAL I",
        "daily kredit": "3738000000"
      },
      {
        "nama produk": "ABRI",
        "regional": "REGIONAL I",
        "daily premi": "38769646"
      },
      {
        "nama produk": "ABRI",
        "regional": "REGIONAL III",
        "daily peserta": "0"
      },
      {
        "nama produk": "ABRI",
        "regional": "REGIONAL III",
        "daily kredit": null
      },
      {
        "nama produk": "ABRI",
        "regional": "REGIONAL III",
        "daily premi": null
      },
      {
        "nama produk": "ABRI",
        "regional": "REGIONAL IV",
        "daily peserta": "0"
      },
      {
        "nama produk": "ABRI",
        "regional": "REGIONAL IV",
        "daily kredit": null
      },
      {
        "nama produk": "ABRI",
        "regional": "REGIONAL IV",
        "daily premi": null
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "LAINNYA",
        "daily peserta": "0"
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "LAINNYA",
        "daily kredit": null
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "LAINNYA",
        "daily premi": null
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "REGIONAL I",
        "daily peserta": "1"
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "REGIONAL I",
        "daily kredit": "75000000"
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "REGIONAL I",
        "daily premi": "721455"
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "REGIONAL II",
        "daily peserta": "6"
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "REGIONAL II",
        "daily kredit": "823200000"
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "REGIONAL II",
        "daily premi": "32251012.84"
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "REGIONAL III",
        "daily peserta": "5"
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "REGIONAL III",
        "daily kredit": "330500000"
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "REGIONAL III",
        "daily premi": "13093625.45"
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "REGIONAL IV",
        "daily peserta": "92"
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "REGIONAL IV",
        "daily kredit": "11069000000"
      },
      {
        "nama produk": "PERCEPATAN",
        "regional": "REGIONAL IV",
        "daily premi": "323911350.2000001"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "LAINNYA",
        "daily peserta": "13"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "LAINNYA",
        "daily kredit": "606950000"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "LAINNYA",
        "daily premi": "32376923.700000003"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "REGIONAL I",
        "daily peserta": "27"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "REGIONAL I",
        "daily kredit": "2154000000"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "REGIONAL I",
        "daily premi": "97020498.19"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "REGIONAL II",
        "daily peserta": "28"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "REGIONAL II",
        "daily kredit": "2675000000"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "REGIONAL II",
        "daily premi": "91049751.98"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "REGIONAL III",
        "daily peserta": "30"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "REGIONAL III",
        "daily kredit": "2397900000"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "REGIONAL III",
        "daily premi": "96396448.16399999"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "REGIONAL IV",
        "daily peserta": "94"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "REGIONAL IV",
        "daily kredit": "10647200000"
      },
      {
        "nama produk": "SPK REGULER",
        "regional": "REGIONAL IV",
        "daily premi": "440534803.87"
      }
    ]
  }
}

我已经对数组结果进行了排序,因为stackoverflow在创建线程时有限制,我只显示了每天,而不显示每月和每年。我希望你们能理解我的三个字。谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-11-25 19:04:49

代码语言:javascript
复制
$len=count($data);

    for($i=0;$i<$len;$i++) {
         $nmproduk=$data[$i]['nmproduk'];
         if(isset($data[$nmproduk])){
              array_push($data[$nmproduk],$data[$i]);
            }
          else
           {
               $data[$nmproduk][]=$data[$i];
          }

    }

它将返回用通用名称nmproduk索引的完整数组

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33914538

复制
相关文章

相似问题

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