PHP警告:非法字符串偏移量';全部';
我正在处理一个PHP网页,我的前端出现了一个错误<代码>警告:第93行的字符串偏移量'all'非法。 这是第93行的代码PHP警告:非法字符串偏移量';全部';,php,Php,我正在处理一个PHP网页,我的前端出现了一个错误警告:第93行的字符串偏移量'all'非法。 这是第93行的代码 $all_categories=isset($options['categories')和&$options['categories']['all'])?真:假; 问题在于 $options['categories'] 有效 $options['categories']['all'] 事实并非如此 将您的线路更改为 $all_categories = isset($options
$all_categories=isset($options['categories')和&$options['categories']['all'])?真:假;
问题在于
$options['categories']
有效
$options['categories']['all']
事实并非如此
将您的线路更改为
$all_categories = isset($options['categories']) &&
isset($options['categories']['all']) &&
$options['categories']['all'] ? true : false;
将抑制您的错误并返回FALSE。(添加换行符仅为清晰起见,可以删除)如果您只是想查看
$options['categories']['all']
是否存在并包含某些内容,则可以将代码简化为:
$all_categories = !empty($options['categories']['all']);
您不需要检查是否设置了
$options['categories']
,因为如果$options['categories']['all']
已设置,则必须设置包含它的数组。对于真部分返回true
,对于假部分返回false
的三元结构增加了不必要的复杂性。?
前面的表达式已经为您提供了所需的布尔值。$options['categories']
是字符串,而不是多维数组。Var_转储它并查看输出是什么;@riggsfully的代码“$all_categories=isset($options['categories',$options['categories']['all'])是如何解决我的错误的?答案中解释了这一点。。。您只检查了两个必需值(嵌套数组)中的一个。外部数组有$options['categories'],但内部数组不是$options['categories']['all']——您需要同时检查这两个值。添加第二个检查完成了这一点。另一个答案是使用一个内部函数来完成这两个任务。如果你看一下这两个的汇编结果,我敢打赌它们是完全相同的。我的版本更明确,更清晰,以支持程序员-他的版本更紧凑,代码更密集-这是一篇风格选择很好的文章,解释了未定义/null/false作为值之间的细微差别,以及各种函数如何处理它们,所以在本例中
在
上返回非法字符串偏移量?