1

I have a function:

function getTrend($results, $region, $monthNo)
{
    $dateMap = getLastNMonths(6);
    $keys = array_keys($dateMap);
    $val = $results[$region][$keys[$monthNo]];

    if(isset($val))
    {
        return round($val, 2);
    }
    else {
        return '0.00';
    }
}

..where $val is returning NULL. Now I know there is data in $dateMap and $keys from doing a var_dump() on them...

Here is a couple lines from $results:

array(21) { ["01"]=> array(5) { ["01-SEP-11"]=> string(40) "596.386666666666666666666666666666666667" ["01-OCT-11"]=> string(40) "639.347666666666666666666666666666666667" ["01-NOV-11"]=> string(40) "857.364833333333333333333333333333333333" ["01-DEC-11"]=> string(40) "663.022833333333333333333333333333333333" ["01-JAN-12"]=> string(41) "1094.066833333333333333333333333333333333" } ["02"]=> array(5) { ["01-SEP-11"]=> string(8) "510.1675" ["01-OCT-11"]=> string(8) "542.4725" ["01-NOV-11"]=> string(8) "809.4245" ["01-DEC-11"]=> string(40) "314.023833333333333333333333333333333333" ["01-JAN-12"]=> string(40) "913.979666666666666666666666666666666667" } ["03"]=> array(5) { ["01-SEP-11"]=> string(40) "594.528333333333333333333333333333333333" ["01-OCT-11"]=> string(40) "465.415333333333333333333333333333333333" ["01-NOV-11"]=> string(40) "508.904666666666666666666666666666666667" ["01-DEC-11"]=> string(8) "355.6895" ["01-JAN-12"]=> string(7) "706.928" } ["04"]=> array(5) { ["01-SEP-11"]=> string(40) "112.094833333333333333333333333333333333" ["01-OCT-11"]=> string(40) "399.436666666666666666666666666666666667" ["01-NOV-11"]=> string(40) "193.798166666666666666666666666666666667" ["01-DEC-11"]=> string(40) "246.241666666666666666666666666666666667" ["01-JAN-12"]=> string(40) "582.542333333333333333333333333333333333" } ["WOCB"]=> array(5) { ["01-SEP-11"]=> string(40) "216.045166666666666666666666666666666667" ["01-OCT-11"]=> string(40) "139.774333333333333333333333333333333333" ["01-NOV-11"]=> string(7) "254.421" ["01-DEC-11"]=> string(7) "142.355" ["01-JAN-12"]=> string(40) "119.464666666666666666666666666666666667" } ["NONE"]=> array(5) { ["01-SEP-11"]=> string(7) "427.196" ["01-OCT-11"]=> string(40) "430.996333333333333333333333333333333333" ["01-NOV-11"]=> string(40) "259.113666666666666666666666666666666667" ["01-DEC-11"]=> string(40) "188.372166666666666666666666666666666667" ["01-JAN-12"]=> string(40) "332.743333333333333333333333333333333333" } }

Here is a couple lines from $dateMap:

array(6) { ["01-SEP-2011"]=> string(14) "September 2011" ["01-OCT-2011"]=> string(12) "October 2011" ["01-NOV-2011"]=> string(13) "November 2011" ["01-DEC-2011"]=> string(13) "December 2011" ["01-JAN-2012"]=> string(12) "January 2012" ["01-FEB-2012"]=> string(13) "February 2012" } array(6) { ["01-SEP-2011"]=> string(14) "September 2011" ["01-OCT-2011"]=> string(12) "October 2011" ["01-NOV-2011"]=> string(13) "November 2011" ["01-DEC-2011"]=> string(13) "December 2011" ["01-JAN-2012"]=> string(12) "January 2012" ["01-FEB-2012"]=> string(13) "February 2012" } array(6) { ["01-SEP-2011"]=> string(14) "September 2011" ["01-OCT-2011"]=> string(12) "October 2011" ["01-NOV-2011"]=> string(13) "November 2011" ["01-DEC-2011"]=> string(13) "December 2011" ["01-JAN-2012"]=> string(12) "January 2012" ["01-FEB-2012"]=> string(13) "February 2012" }

Here is a couple lines from $keys:

array(6) { [0]=> string(11) "01-SEP-2011" [1]=> string(11) "01-OCT-2011" [2]=> string(11) "01-NOV-2011" [3]=> string(11) "01-DEC-2011" [4]=> string(11) "01-JAN-2012" [5]=> string(11) "01-FEB-2012" } array(6) { [0]=> string(11) "01-SEP-2011" [1]=> string(11) "01-OCT-2011" [2]=> string(11) "01-NOV-2011" [3]=> string(11) "01-DEC-2011" [4]=> string(11) "01-JAN-2012" [5]=> string(11) "01-FEB-2012" } array(6) { [0]=> string(11) "01-SEP-2011" [1]=> string(11) "01-OCT-2011" [2]=> string(11) "01-NOV-2011" [3]=> string(11) "01-DEC-2011" [4]=> string(11) "01-JAN-2012" [5]=> string(11) "01-FEB-2012" } array(6) { [0]=> string(11) "01-SEP-2011" [1]=> string(11) "01-OCT-2011" [2]=> string(11) "01-NOV-2011" [3]=> string(11) "01-DEC-2011" [4]=> string(11) "01-JAN-2012" [5]=> string(11) "01-FEB-2012" } array(6) { [0]=> string(11) "01-SEP-2011" [1]=> string(11) "01-OCT-2011" [2]=> string(11) "01-NOV-2011" [3]=> string(11) "01-DEC-2011" [4]=> string(11) "01-JAN-2012" [5]=> string(11) "01-FEB-2012" }

$monthNo can equal either 0,1,2,3,4,5. For example:

$mo2 = getTrend($results, $region, 1);

My question is, why can I not see anything from $val? What am I missing here? Did I show you enough code? Thanks :)

4

3 回答 3

2

请参阅此部分:

array(21) { ["01"]=> array(5) { ["01-SEP-11"]=> string(40) ...

看看钥匙 - 它"01"在引号中。这意味着它是一个字符串,所以你必须这样做

$results["01"]

拿到那把钥匙。如果你通过

$results[1]

它不会出现。当您最初填充$results该键时,应将其转换为int

于 2012-02-17T22:31:13.973 回答
2

问题是你有一个关联数组,你想像索引数组一样访问它。

在 PHP 中,共有三种类型的数组:

索引数组- 具有数字索引的数组

关联数组- 具有命名键的数组

多维数组- 包含一个或多个数组的数组

更多关于数组

您不能访问关联数组的值,例如

echo $results[1];

因为您的数组键中有字符串。$results["01"]

那么,当您不知道数组的键及其动态生成时会发生什么?

如果您不知道数组的密钥,则必须使用array_values. 此函数接受一个数组并返回一个数组,但返回数组的索引为 0,1,2... 键丢失但值没有。

获取关联数组索引 1 处的数组值

echo array_values($results)[1]

于 2016-09-27T19:35:19.997 回答
0

“结果”返回 null,索引 01 != 1

var_dump(isset($val)); // false
于 2012-02-17T22:34:37.857 回答