关联数组的array_push函数

27

我正在尝试像这样扩展关联数组,但是PHP不喜欢它。

我收到了这个消息:

Warning: array_push() expects parameter 1 to be array, null given
这是我的代码:
$newArray = array();  
foreach ( $array as $key => $value ) { 
    $array[$key + ($value*100)] = $array[$key];
    unset ( $array[$key] );
    array_push ( $newArray [$key], $value );
}
//}
print_r($newArray);

我哪里做错了?


2
哦,好的,抱歉。下次会注意的。毕竟这也符合我的利益!谢谢。 - EnglishAdam
这段代码看起来真的很杂乱,你能告诉我们你想要做什么吗? - Karoly Horvath
我尝试了Ariz的方法,但是没有成功,我认为它不正确。它创建了索引,但无法设置值。请参见下面的答案以获取$newArray[$key] = $value;的正确语法。 - drew010
我正在尝试使用array_push,但是针对的是关联数组而不是数值数组。 - EnglishAdam
PHP有关联数组。它没有像其他语言中定义的数字数组。因此,即使您设置了仅具有值的数组,您也有索引。 - akDeveloper
2个回答

58

这是你的问题:

$newArray[$key] 是 null,因为 $newArray 是一个空数组,还没有值。

你可以使用以下代码替换:

array_push( $newArray, $value );

或者使用array_push的替代方法

$newArray[$key] = $value;

这样你就可以保留$key的索引。


当然,你是正确的!关联数组不依赖于其编号系统,因此添加另一对是最好的方法!数组推送更多地是为值提供一个键。所以这是一个愚蠢的问题,因为关联数组已经有一个键了!无论如何,感谢你的时间! - EnglishAdam
4
array_push()总是将元素添加到数组底部,而$array[$key] = $value可能会覆盖你的$array中的一个元素。 - akDeveloper

9

我使用array_merge预置函数将关联数组推入数组中。

例如:

$jsonDataArr=array('fname'=>'xyz','lname'=>'abc');
$pushArr=array("adm_no" => $adm_no,'date'=>$date);
$jsonDataArr = array_merge($jsonDataArr,$pushArr);
print_r($jsonDataArr);//Array ( [fname] => xyz [lname] => abc [adm_no] =>1234 [date] =>'2015-04-22')

聪明的,正在寻找一种将关联和增量索引混合推入一个单一数组并保持它们被“推入”的顺序的方法。 - Louis Loudog Trottier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接