PHP或cakephp:为什么+=是不受支持的操作数

PHP或cakephp:为什么+=是不受支持的操作数,php,twitter-bootstrap,cakephp,Php,Twitter Bootstrap,Cakephp,我使用: PHP版本5.5.9-1ubuntu4.5 CakePHP版本2_3_6 为cakephp安装BoostCake 1.0.6引导程序插件 我下载了Bootstrap3.3.1并将css和js文件放到fodlers的webroot/css和webroot/js中 在设置了上面描述的所有内容之后,我遇到了一个奇怪的错误: 错误:不支持的操作数类型文件: /var/www/cakephp_2_3_6/app/Plugin/BoostCake/View/Helper/BoostCakePagi

我使用:

PHP版本5.5.9-1ubuntu4.5

CakePHP版本2_3_6

为cakephp安装BoostCake 1.0.6引导程序插件

我下载了Bootstrap3.3.1并将css和js文件放到fodlers的webroot/css和webroot/js中

在设置了上面描述的所有内容之后,我遇到了一个奇怪的错误:

错误:不支持的操作数类型文件:

/var/www/cakephp_2_3_6/app/Plugin/BoostCake/View/Helper/BoostCakePaginatorHelper.php 电话:102

第102行:

$option和$default是数组

这是php的函数还是cakephp的函数?这个版本是不是太低了

编辑
正如回答中提到的,问题既不是PHP,也不是cakePHP。这是我使用插件的错误方式,导致了一个试图将数组和null相加的操作。

这两个变量彼此不兼容。我假设两个$option中的一个是数组,另一个$default是数值、null或字符串

所以,如果默认值是一个数字,我的假设是您实际上正在尝试这样做:

$options[] = $default;
或者,您可能希望它们是数组,而创建$options或$default时出现了一些问题

因此,如果$default或$option基于您可以控制的值,则很可能传递了错误的值,因为它们不能同时是数组,否则会出现错误


如果您无法控制这些值的来源,我认为最实际的一步就是将其作为bug报告。如果您按照他们的教程进行操作,我认为可以安全地假设他们的项目中存在问题,并且要求stackoverflow查找并修复一个bug会有点过分。

这不是php,也不是cakephp。这是因为插件。出于某种原因,调用函数时使用的参数不是数组$默认值是array,所以$options可能不是。你能在那一行之前甩掉$options吗?谢谢!这就是插件。我没想到会这样$选项为空。我仍然不知道为什么,但我会找到答案。现在我只检查$options是否为null$default是硬编码的。我所能想到的就是确保您使用的插件与示例中的插件相同。只需在方法中抛出一个异常,并检查stacktrace,以确定从何处调用它以及传递了什么值。您也可以不附加到数组中。如果该值不是数组/对象,则将其包装为一个数组/对象。然后union运算符就可以工作了。@JonathanKuhn它确实可以工作,但它总是会覆盖数字数组中的第一个元素。不知何故,我觉得这不是OP想要的,但我可能错了。只是在这里猜测一下:实际上,在使用union操作符时不会。左数组中的值不会被右数组中的值覆盖,只添加左数组中不存在的值。这与array_merge$options$default正好相反。如果$options数组中已经存在项0,则它将只使用$options[0]中的值,而不使用$default[0]覆盖它。此外,使用array_merge,数字键被追加,而不是被覆盖。所以实际上它应该是array\u merge$default,array$options。数值键将被追加,$options中的assoc将被覆盖。双方可能都想查看链接的源代码,OP既不想向数组追加内容,也不想将$default变量作为问题。这是一个第三方插件,代码希望联合两个数组,其中$default是硬编码的,因此无论出于何种原因,$options显然都是问题所在。@JonathanKuhn:是的,但假设这实际上是所需的行为仍然是一个难题;。ndm,很公平。。。我会把我的回答和你的评论一起附上。
$options[] = $default;