2011-01-23 89 views
1

可能重复:
mysql_fetch_array() expects parameter 1 to be resource, boolean given in select使用array_push()将元素添加到阵列中的“键=>对象”形式

我有一组对象的欲放入一个数组中,我想用键区分它们。

我写的初始代码是:

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

不知道礼仪的做法是什么,但在这个问题上的措辞以及其简洁使它更具可读性/搜索相比,应聘者欺骗。老实说,我宁愿让这个老玩家成为这个老玩家的蠢蛋。 – 2011-01-23 04:43:54

回答

3

键关联数组必须是唯一的,所以如果你想保持一个键/值对,您可以通过按键直接进入事物的概念,不要使用array_push,只需将钥匙(这是精在PHP做):

$array[$key] = new myObj(param1, param2, etc) 

在另一方面,如果你想有键/值对的列表,如堆栈,并且要添加只需一个键/值对,不要使用array_push,只需使用PHP的sho添加到数组中rthand语法(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)) 
); 
+0

感谢您的快速回复!实际上我自己找到了答案(在这里)。发布前我没有做过搜索。 http://stackoverflow.com/questions/3481584/array-push-key-value-how-can-do-it – Matt 2011-01-23 04:40:07

0

尝试:

$array[$key] = new myObj(param1, param2, etc);