PHP中访问associativeArray[a][2][0]返回错误值的问题咨询
PHP数组访问STD代码返回错误值的问题分析与解决
嘿,这个问题我太熟悉了!你遇到的根本原因是PHP对前导0数字的解析规则——你写的0621被当作八进制数处理了,而不是你期望的十进制STD代码。
问题拆解
在PHP里,数字字面量如果以0开头,会自动被解析为八进制数。八进制的0621转换为十进制是401,这就是为什么你用$associativeArray[0][2][0]拿到的是错误值;而电话号码22465874没有前导0,所以正常解析为十进制数,能正确获取。
修复方案
把STD代码用双引号或单引号包裹成字符串,这样PHP就不会把它当作数值解析,而是保留原始的字符序列。修正后的代码如下:
<?php error_reporting(0); echo "<br>"; $associativeArray = array( array(1, "Rahul", array("0621", 22465874)), array(2, "Ayushi", array("0261", 2265471)), array(3, "Ritik", array("2314", 4789556)) ); echo $associativeArray[0][2][0], "<br>"; // 现在输出正确的"0621" echo $associativeArray[0][2][1]; // 正常输出22465874 ?>
额外建议
如果后续需要对STD代码做数值运算,可以在使用时通过intval($stdCode, 10)将字符串转为十进制整数;但如果STD代码需要保留前导0(比如作为固定标识),保持字符串形式是最稳妥的做法。
内容的提问来源于stack exchange,提问作者Rahul Ranjan
相关产品推荐
相关产品推荐

