Wea*_*917 8 php arrays error-handling
出于好奇,这只是一个简单的问题.我花了一整天调试我的PHP代码,发现问题是由于将整数视为一个数组:
$x = $int[$index]; // this returns null, but no error at all
Run Code Online (Sandbox Code Playgroud)
整数实际上是一个数组,但是用于传递数组的函数搞砸了并传递了数组中的第一个值.是否有任何原因未显示错误?访问数组上的未定义索引会产生错误,但尝试访问整数上不存在的索引不会?
我原本以为;它类型转换$int为字符串,因为[]这是访问字符串位置的另一种方式。看起来似乎合理,这不会产生错误:
$string 'Hello';
echo $string[0]; // H
Run Code Online (Sandbox Code Playgroud)
然而,事实并非如此:
$int = 1;
echo $int[0];
Run Code Online (Sandbox Code Playgroud)
不输出任何内容并var_dump($int[0])返回NULL。
有趣的是,booland 也表现出相同的行为float,并且使用的操作是FETCH_DIM_R获取“array-value”中“index”处的元素值,并将其存储在“result”中。
来自手册数组:
注意:数组取消引用不是字符串的标量值会默默产生NULL,即不会发出错误消息。
与此现象类似,不会产生错误。错误#68110和#54556:
$array['a'] = null;
echo $array['a']['non-existent'];
Run Code Online (Sandbox Code Playgroud)
分配不起作用并不奇怪:
$int = 1;
$int[0] = 2;
Run Code Online (Sandbox Code Playgroud)
警告:不能将标量值用作数组
因此 PHP 实际上尝试将int, bool,float作为数组访问,但不会生成错误。至少从版本 4.3.0 到 7.2.2。
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |