Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP警告:非法字符串偏移量';全部';_Php - Fatal编程技术网

PHP警告:非法字符串偏移量';全部';

PHP警告:非法字符串偏移量';全部';,php,Php,我正在处理一个PHP网页,我的前端出现了一个错误警告:第93行的字符串偏移量'all'非法。 这是第93行的代码 $all_categories=isset($options['categories')和&$options['categories']['all'])?真:假; 问题在于 $options['categories'] 有效 $options['categories']['all'] 事实并非如此 将您的线路更改为 $all_categories = isset($options

我正在处理一个PHP网页,我的前端出现了一个错误<代码>警告:第93行的字符串偏移量'all'非法。

这是第93行的代码

$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作为值之间的细微差别,以及各种函数如何处理它们,所以在本例中
  • 上返回非法字符串偏移量?