获取多维数组最后一个值的值

时间:2019-05-07 23:59:25

标签: php arrays loops

我有最近几个月的每个月的值的sn数组。每个月都有查询,报价和订单的数量。我正在尝试为每个月创建一个数组,然后对于所述月份,它将保存查询,报价和订单的值,因此我可以输出每个月的所有3个值。

我的问题是,当我将foreach用于$arr[$y][$m] as $a时,$a似乎不包含查询,引号或订单的其他数组元素,即$a['enquiries']没有任何价值。

如何获取值,或者有更简单的方法吗?

// creating the array

$arr = array();
$arr[19][03]['enquiries'] = 34;
$arr[19][02]['enquiries'] = 24;
$arr[19][01]['enquiries'] = 28;
$arr[18][12]['enquiries'] = 42;

$arr[19][03]['quotes'] = 22;
$arr[19][02]['quotes'] = 14;
$arr[19][01]['quotes'] = 11;
$arr[18][12]['quotes'] = 23;

$arr[19][03]['orders'] = 15;
$arr[19][02]['orders'] = 9;
$arr[19][01]['orders'] = 6;
$arr[18][12]['orders'] = 11;

// extrapolating the values

$y = 19;
$m = 03;
for ($x = 0; $x <= 3; $x++) {

// outputting the values

    foreach($arr[$y][$m] as $a) {
        echo $y.' '.$m.' enquiries='.$a['enquiries'].'<br>';
        echo $y.' '.$m.' quotes='.$a['quotes'].'<br>';
        echo $y.' '.$m.' orders='.$a['orders'].'<br>';
    }

    // creating the units the previous month

    $m--;
    if($m<1) {
        $m = 12;
        $y = $y--;
    }
}

输出数组:

Array
(
    [19] => Array
        (
            [3] => Array
                (
                    [enquiries] => 34
                    [quotes] => 22
                    [orders] => 15
                )

            [2] => Array
                (
                    [enquiries] => 24
                    [quotes] => 14
                    [orders] => 9
                )

            [1] => Array
                (
                    [enquiries] => 28
                    [quotes] => 11
                    [orders] => 6
                )

        )

    [18] => Array
        (
            [12] => Array
                (
                    [enquiries] => 42
                    [quotes] => 23
                    [orders] => 11
                )

        )

)

1 个答案:

答案 0 :(得分:3)

您不需要foreach$arr[$y][$m]已经用键enquiries等指向数组,因此您可以直接访问值:

echo $y.' '.$m.' enquiries='.$arr[$y][$m]['enquiries'].'<br>';
echo $y.' '.$m.' quotes='.$arr[$y][$m]['quotes'].'<br>';
echo $y.' '.$m.' orders='.$arr[$y][$m]['orders'].'<br>';