Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在highchart系列中使用的复杂多维数组_Php_Arrays_Multidimensional Array_Highcharts_Yii2 - Fatal编程技术网

Php 在highchart系列中使用的复杂多维数组

Php 在highchart系列中使用的复杂多维数组,php,arrays,multidimensional-array,highcharts,yii2,Php,Arrays,Multidimensional Array,Highcharts,Yii2,我需要一些帮助来创建/修改多维数组。我已从yii2ArrayDataProvider创建了此数组: Array( [0] => Array ( [resumo_mes] => 2017-06-01 [total_total] => 15826 [total_chegadas] => 9560 [total_partidas] => 6266 [total_36h] => 9

我需要一些帮助来创建/修改多维数组。我已从yii2
ArrayDataProvider
创建了此数组:

Array(
[0] => Array
    (
        [resumo_mes] => 2017-06-01
        [total_total] => 15826
        [total_chegadas] => 9560
        [total_partidas] => 6266
        [total_36h] => 9633
        [chegadas_36h] => 6076
        [partidas_36h] => 3557
        [total_90m_36h] => 5510
        [chegadas_90m_36h] => 3001
        [partidas_90m_36h] => 2509
        [total_90m] => 683
        [chegadas_90m] => 483
        [partidas_90m] => 200
    )

[1] => Array
    (
        [resumo_mes] => 2017-05-01
        [total_total] => 16170
        [total_chegadas] => 9625
        [total_partidas] => 6545
        [total_36h] => 9962
        [chegadas_36h] => 6057
        [partidas_36h] => 3905
        [total_90m_36h] => 5542
        [chegadas_90m_36h] => 3139
        [partidas_90m_36h] => 2403
        [total_90m] => 666
        [chegadas_90m] => 429
        [partidas_90m] => 237
    )
)
我正在努力做到这一点:

Array(
[0] => Array
    (
        [type] => column
        [name] => 2017-06-01
        [data] => Array
            (
                [0] => 15826
                [1] => 9560
                [2] => 6266
                [3] => 9633
                [4] => 6076
                [5] => 3557
                [6] => 5510
                [7] => 3001
                [8] => 2509
                [9] => 683
                [10] => 483
                [11] => 200
            )

    )

[1] => Array
    (
        [type] => column
        [name] => 2017-05-01
        [data] => Array
            (
                [0] => 16170
                [1] => 9625
                [2] => 6545
                [3] => 9962
                [4] => 6057
                [5] => 3905
                [6] => 5542
                [7] => 3139
                [8] => 2403
                [9] => 666
                [10] => 429
                [11] => 237
            )

    )
)
Array(
[0] => Array
    (
        [type] => column
        [name] => 2017-06-01
        [data] => Array
            (
                [0] => 15826
                [1] => 16170
            )

    )

[1] => Array
    (
        [type] => column
        [name] => 2017-05-01
        [data] => Array
            (
                [0] => 15826
                [1] => 16170
            )

    )

)
但是我被困在获取值的过程中,使用以下代码:

$data = $dataProvider->getModels();
foreach ($data as $d) {
    $mes[] = $d['resumo_mes'];
    $total[] = intval($d['total_total']);
};

foreach ($mes as $m) {
    $series[] = array(
            'type' =>'column', 'name' =>$m, 
            'data' => $total
        );
};
我能够做到这一点:

Array(
[0] => Array
    (
        [type] => column
        [name] => 2017-06-01
        [data] => Array
            (
                [0] => 15826
                [1] => 9560
                [2] => 6266
                [3] => 9633
                [4] => 6076
                [5] => 3557
                [6] => 5510
                [7] => 3001
                [8] => 2509
                [9] => 683
                [10] => 483
                [11] => 200
            )

    )

[1] => Array
    (
        [type] => column
        [name] => 2017-05-01
        [data] => Array
            (
                [0] => 16170
                [1] => 9625
                [2] => 6545
                [3] => 9962
                [4] => 6057
                [5] => 3905
                [6] => 5542
                [7] => 3139
                [8] => 2403
                [9] => 666
                [10] => 429
                [11] => 237
            )

    )
)
Array(
[0] => Array
    (
        [type] => column
        [name] => 2017-06-01
        [data] => Array
            (
                [0] => 15826
                [1] => 16170
            )

    )

[1] => Array
    (
        [type] => column
        [name] => 2017-05-01
        [data] => Array
            (
                [0] => 15826
                [1] => 16170
            )

    )

)

如您所见,值来自两个内部数组的
total\u total
。我如何像上面给出的示例那样分割它们?

循环并生成结果,在使用后取消设置
resumo\u mes
。然后获取剩余的值:

foreach($data as $key => $values) {
    $series[$key]['type'] = 'column';
    $series[$key]['name'] = $values['resumo_mes'];
    unset($values['resumo_mes']);
    $series[$key]['data'] = array_map('intval', array_values($values));
}
您还可以根据类型使用
is_numeric
is_int
过滤值<代码>是数字的适用于示例数据,因为日期不是“数字”:


使用
intval

添加的
array\u map
是从
$data->getModels()
输出的第一个代码块吗?运行第三个代码块后,最后一个代码块是否是
$series
的输出?你可能会更清楚一点。你是对的,在两个问题中,Hank的第一个示例都有效并返回正确的数组。我还有一个问题,我必须将“数据”强制转换为整数,否则highcharts不会呈现,但如果我在循环内强制转换
intval(数组值($values))
I中断数据…使用
intval添加
array\u map