因此,今天我尝试了一些我认为可能的事情,但显然不可能。
PHP版本:5.6
看一下这段代码:
$m = 1;
while ($m <= 12) {
if (! isset($$dataRef[$m])) {
echo '0,';
} else {
echo $$dataRef[$m] . ',';
}
$m++;
}
$$dataRef
数字索引数组在哪里,按月显示(例如[1 => 12345.67]
)
该if
语句的作用是检查是否定义了月份号,如果未定义,则echo 0
,否则执行值。
上面的代码片段导致if语句未执行。我不知道为什么吗?
但是,如果然后将数组分配给“普通”变量,则代码可以正常工作:
$m = 1;
$data = $$dataRef;
while ($m <= 12) {
if (! isset($data[$m])) {
echo '0,';
} else {
echo $data[$m] . ',';
}
$m++;
}
任何人都可以解释吗?
您的代码会仔细省略相关的变量声明。我猜缺少的部分可能看起来像这样:
$abc = array(
1 => 12345.67,
2 => 876.54,
);
$dataRef = 'abc';
var_dump($$dataRef[0], $$dataRef[1], $$dataRef[2]);
...,并且这些通知为您提供了一个线索:
PHP Notice: Undefined variable: a PHP Notice: Undefined variable: b PHP Notice: Undefined variable: c
换句话说,您不使用[]
数组运算符。您正在将其用作字符串偏移量运算符。您想要这个:
var_dump(${$dataRef}[1], ${$dataRef}[2]);
float(12345.67) float(876.54)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句