PHP变量$totalPrice无法正确赋值数组元素问题求助
问题分析与解决
这问题很典型——你搞反了变量定义的顺序!
看你的代码执行流程:
- 初始化
$totalPrice = 0 - 设置
$site = "UM" - 尝试把
$sites[$site][0]赋值给$totalPrice - 这时候
$sites数组还没被定义呢! - 之后才创建
$sites数组 - 最后echo
$totalPrice
PHP里,当你访问一个未定义的数组时,会产生Notice: Undefined variable: sites的警告(如果错误级别开得够高的话),而$sites[$site][0]此时的值是null,把null赋值给$totalPrice后,echo的时候PHP会自动把null转换成0输出,所以你看到的始终是0。
而你直接echo$sites[$site][0]能正常显示,那肯定是你在echo的时候$sites数组已经被定义了,和这段代码的执行顺序不一样。
修正后的代码
只需要把$sites数组的定义放到赋值语句之前就行:
$sites = array ( "US" => array (38.78, 11, 5.5), "UM" => array (44.55, 11, 5.5), "PS" => array (55.28, 11, 5.5), "PM" => array (66.55, 11, 5.5) ); $totalPrice = 0; $site = "UM"; $totalPrice = $sites[$site][0]; echo $totalPrice; // 现在会输出44.55
另外,建议你开启PHP的错误提示,这类变量未定义的问题会直接显示出来,方便快速排查。可以在代码开头加上:
error_reporting(E_ALL); ini_set('display_errors', 1);
内容的提问来源于stack exchange,提问作者RJD
相关产品推荐
相关产品推荐

