首页 > 解决方案 > 获取多维数组最后一个值的值

问题描述

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

我的问题是,当我使用 foreach for 时$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
                )

        )

)

标签: phparraysloops

解决方案


你不需要一个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>';

推荐阅读