我有一个功能:
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看不到任何东西?我在这里错过了什么?我有没有给你足够的代码?谢谢:))
答案 0 :(得分:2)
见这部分:
array(21) { ["01"]=> array(5) { ["01-SEP-11"]=> string(40) ...
查看密钥 - 引号中的"01"
。这意味着它是一个字符串,所以你必须这样做
$results["01"]
获取该密钥。如果你要传入
$results[1]
它不会出现。当您最初填充$results
时,该密钥应转换为int
答案 1 :(得分:1)
问题是你有一个关联数组,你想像索引数组那样访问它。
在PHP中,有三种类型的数组:
索引数组 - 具有数字索引的数组
关联数组 - 具有命名键的数组
多维数组 - 包含一个或多个数组的数组
您无法访问像
这样的关联数组的值 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