可能重复:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select
我有一组想要放入数组的对象,我想用键区分它们。
我写的初始代码是:
array_push($array[$key], new myObj(param1, param2, etc));
当我运行它时,我收到警告:
PHP Warning: array_push() expects parameter 1 to be array, null given in file.php on line 56
我添加了一个var_dump()来查看实际发生的情况,并在每个元素'$ key =>中填充数组如错误所示,为null。
如果我从行中删除[$ key],那么它会按预期填充myObj实例的数组,所以我知道构造函数正常运行而不是真正返回'null'。
答案 0 :(得分:3)
关联数组中的键必须是唯一的,因此如果您想保留键/值对的概念,您可以通过键直接访问事物,请不要使用array_push
,只需设置键即可(这在PHP中很好):
$array[$key] = new myObj(param1, param2, etc)
另一方面,如果您想要一个键/值对列表(如堆栈),并且一次只添加一个键/值对,请不要使用array_push
,只需使用PHP的简写语法(as the manual says, this is faster as it saves you a function call)添加到数组中:
$stack[] = array($key => new myObj(param1, param2, etc));
还有一种可能性,如果你有一堆键/值对,并且想要将它们全部添加到某些堆栈结构(但不能通过某个键直接索引),那么你应该使用array_push
:
array_push($stack,
array($key1 => new myObj(param1, param2, etc)),
array($key2 => new myObj(param3, param4, etc))
);
答案 1 :(得分:0)
尝试:
$array[$key] = new myObj(param1, param2, etc);