标签:php
对我来说,最简单的解释方法是显示一个示例……这是问题代码的复制:
$test=array();
$test['one']='hello';
if(isset($test['one']['two'][0])) {
echo 'Apparently it is set ...';
echo $test['one']['two'][0];
}
?>
返回为:
Apparently it is set …
Warning: Illegal string offset ‘two’ in C:\test.php on line 6
h
这是因为存在混合密钥类型吗?我遇到的只是一个异常现象,想知道是否有人可以对此有所了解…
解决方法:
原因是,当取消引用字符串时,它将返回一个包含单个字符的字符串(假定索引不超过长度);可以再次取消对结果字符串的引用(从5.4开始).
例如-link:
$s = 'hello';
$s[0]; // "h"
$s[0][0]; // "h"
// etc. etc.
诸如“ two”之类的非法索引会引起通知,但除非在isset()中使用,否则它将被视为索引0.
另一个例子:
$s[0][1]; // ""
$s[0][1][0]; // notice: uninitialised string offset: 0
如果您事先不知道是否传递了字符串或数组,这对您很重要,则需要在每个路径之间进行其他类型检查.
标签:php
来源: https://codeday.me/bug/20191121/2048402.html