数组返回NULL,但我可以看到数据var_dump(....)。见代码

时间:2012-02-17 22:26:36

标签: php var-dump

我有一个功能:

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';
    }
}

..其中$ val返回NULL。现在我知道在$ dateMap和$ keys中有数据来对它们执行var_dump()...

以下是$ results的几行:

  

array(21){[“01”] => array(5){[“01-SEP-11”] =>串(40)   “596.386666666666666666666666666666666667”[“01-OCT-11”] =>串(40)   “639.347666666666666666666666666666666667”[“01-NOV-11”] =>串(40)   “857.364833333333333333333333333333333333”[“01-DEC-11”] =>串(40)   “663.022833333333333333333333333333333333”[“01-JAN-12”] =>串(41)   “1094.066833333333333333333333333333333333”} [“02”] => array(5){   [ “01-SEP-11”] => string(8)“510.1675”[“01-OCT-11”] =>串(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”] =>串(40)   “594.528333333333333333333333333333333333”[“01-OCT-11”] =>串(40)   “465.415333333333333333333333333333333333”[“01-NOV-11”] =>串(40)   “508.904666666666666666666666666666666667”[“01-DEC-11”] =>串(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”}}

以下是来自$ dateMap的几行:

  

array(6){[“01-SEP-2011”] => string(14)“2011年9月”   [ “01-OCT-2011”] => string(12)“October 2011”[“01-NOV-2011”] =>   string(13)“November 2011”[“01-DEC-2011”] => string(13)“十二月   2011“[”01-JAN-2012“] =>字符串(12)”2012年1月“[”01-FEB-2012“] =>   string(13)“2012年2月”} array(6){[“01-SEP-2011”] =>串(14)   “2011年9月”[“01-OCT-2011”] => string(12)“2011年10月”   [ “01-NOV-2011”] => string(13)“November 2011”[“01-DEC-2011”] =>   string(13)“December 2011”[“01-JAN-2012”] => string(12)“2012年1月”   [ “01-FEB-2012”] => string(13)“2012年2月”} array(6){   [ “01-SEP-2011”] => string(14)“September 2011”[“01-OCT-2011”] =>   string(12)“October 2011”[“01-NOV-2011”] => string(13)“2011年11月”   [ “01-DEC-2011”] => string(13)“December 2011”[“01-JAN-2012”] =>   string(12)“2012年1月”[“01-FEB-2012”] => string(13)“2012年2月”   }

以下是来自$ keys的几行:

  

array(6){[0] => string(11)“01-SEP-2011”[1] =>串(11)   “01-OCT-2011”[2] => string(11)“01-NOV-2011”[3] =>串(11)   “01-DEC-2011”[4] => string(11)“01-JAN-2012”[5] =>串(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可以等于0,1,2,3,4,5。例如:

  

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

我的问题是,为什么我从$ val看不到任何东西?我在这里错过了什么?我有没有给你足够的代码?谢谢:))

3 个答案:

答案 0 :(得分:2)

见这部分:

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

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

$results["01"]

获取该密钥。如果你要传入

$results[1]

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

答案 1 :(得分:1)

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

  

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

     

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

     

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

     

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

     

More about arrays

您无法访问像

这样的关联数组的值

echo $results[1];

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

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

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

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

echo array_values($results)[1]

答案 2 :(得分:0)

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

var_dump(isset($val)); // false