PHP数组\ U合并:参数不是数组?
我在PHP中遇到了一些我无法理解的奇怪行为PHP数组\ U合并:参数不是数组?,php,arrays,array-merge,Php,Arrays,Array Merge,我在PHP中遇到了一些我无法理解的奇怪行为 $count=0; $temp=array(); //this is definitely a new variable, not that it should matter foreach($array as $arr) { if ($arr->bbcode != $previous_bb) { $previous_bb=$arr->bbcode;
$count=0;
$temp=array(); //this is definitely a new variable, not that it should matter
foreach($array as $arr) {
if ($arr->bbcode != $previous_bb) {
$previous_bb=$arr->bbcode;
//stuff
$temp=array_merge($temp,$arr);
}
//stuff
}
我试着将代码简化一点,只保留必要的内容$数组是一个二维数组(因此每个$arr都有一些属性,如您看到的bbcode)。它抱怨参数1,即$temp,不是数组。将其键入数组会产生虚假结果。当然,这在其他代码中,如果需要的话,我可以提供更多细节,但是有什么想法吗?我在其他地方使用了完全相同的代码和语法,它不会抱怨
编辑:自由地投反对票,对我的工作内容和做事方式有记忆缺失。以前从未问过编程问题(几年内),非常感谢各位,你们的速度非常快 让我们看看你的两个论点
被初始化为$temp
,并重复分配给array()
的返回值,该值(除非出错)始终是数组array\u merge
。嗯,这是以名字命名的,对吗?这与$arr
$two=3一样可靠代码>。您正在访问
,因此它显然是一个对象而不是数组$arr->bbcode
$temp[]=$arr代码>
您正在尝试将对象($arr)与数组($temp)合并。PHP应该抱怨$arr不是数组。请参见下面的示例代码:
php > $obj = new StdClass();
php > $obj->property = "value";
php > $arr = [];
php > array_merge($arr, $obj);
Warning: array_merge(): Argument #2 is not an array in php shell code on line 1
Call Stack:
33.2510 230352 1. {main}() php shell code:0
33.2510 230960 2. array_merge() php shell code:1
php中的类型转换总是有点棘手,如果您这样做的话,请检查一下发生了什么
在尝试优化代码之前,您希望实现什么?清除重复bb代码的新列表
问题的标题是实际错误吗?如果错误消息说它不是数组,则它不是数组。当您使用vardump或gettype()时会发生什么?我收回这一点,它总是一个数组(拼写错误)。确切的错误:array_merge():Argument#1不是数组(当然它不是从0开始计数的,是吗?)。这是真的,我所做的并不是典型的编程。那么,为什么它在其他地方(在完全相同的情况下)起作用呢?编辑:好吧,我明白我做的不同了。出于某种原因,它在抱怨错误的论点,我不会试图找出原因,这也是我困惑的原因之一。谢谢你的回答:)至于第三点,不,这是我想要达到的最有效的方式