首页 > 解决方案 > 在值多维数组 PHP 上应用函数

问题描述

我有一个这样的生产时间的阵列(阵列的数量不固定,有时我们可以在一月份生产,而不是在二月,并在三月重新启动等......):

    Array
(
    [0] => Array
        (
            [Month] => 8
            [HoursProd] => 181.37
        )

    [1] => Array
        (
            [Month] => 9
            [HoursProd] => 699.35
        )

    [2] => Array
        (
            [Month] => 10
            [HoursProd] => 500.25
        )

    [3] => Array
        (
            [Month] => 11
            [HoursProd] => 350.61
        )


)

我想将数组中的小时数除以一个月的小时数。获取月份键(月数),计算这个月的小时数,然后将我的 Hours 值除以这个数字。

对于小时数,我编写此代码以尝试获得一个月内的总小时数。:

    $m = 1;
 $a = date('m');
 $y = date("y");
 $result2 = array();

 for($m; $m <= 12; $m++){
 $d=cal_days_in_month(CAL_GREGORIAN,$m,$y);

 $result2[]["HoursTotalMonth"] = $d * 24;
 $result2[]["Month"] = $m;
 $t = $d * 24;

//To simplify the problem, i try to convert Hours of the month in the same array of production, and wheen the value of month is the same, divise value hours prod by value of hours total month

 $test[] = array("Month" => $m, "HoursTotalMonth" => $t);

 };

我尝试了很多没有成功的事情。最终目标是能够创建 Json 文件以使用 ChartJS 创建图表,最终目标是能够创建 Json 文件以使用 ChartJS 创建图表,生产小时/小时比率为月份的百分比。我成功地使用了一个简单的数组,但没有使用关联的多维数组。

例如:[月] => 8 [RatioHoursProdOnHoursTotalMonth] => 24.37 // (181.37 / (31j*24h))

我想要这个数组:

    Array
(
    [0] => Array
        (
            [Month] => 8
            [RatioHoursProdOnHoursTotalMonth] => 24.37
        )

    [1] => Array
        (
            [Month] => 9
            [RatioHoursProdOnHoursTotalMonth] => 97.13
        )

    [2] => Array
        (
            [Month] => 10
            [RatioHoursProdOnHoursTotalMonth] => 67.23
        )

    [3] => Array
        (
            [Month] => 11
            [RatioHoursProdOnHoursTotalMonth] => 48.69
        )

)

为了能够使用 Json 编码器,像这样:

[{"Month":8,"RatioHoursProdOnHoursTotalMonth":24.37},{"Month":9,"RatioHoursProdOnHoursTotalMonth":97.13},{"Month":10,"RatioHoursProdOnHoursTotalMonth":67.23},{"Month":11,"RatioHoursProdOnHoursTotalMonth":48.69}]

标签: phpmultidimensional-array

解决方案


这是您期望的输出吗?

$a = date('m');
$y = date("y");
$result = array();
$data = array(100,60,75,90,58,98,105,85,74,685,700,550);

for ($m = 1; $m <= 12; $m++){
    $d = cal_days_in_month(CAL_GREGORIAN, $m, $y);

    $result[] = [
        "Heure" => $d * 24,
        "Mois" => $m,
        "ratio" => $data[$m - 1] * 100 / ($d * 24),
    ];
};

print_r($result);

推荐阅读