看看这段代码:

$GET = array();    
$key = 'one=1';
$rule = explode('=', $key);
/* array_push($GET, $rule[0] => $rule[1]); */

我正在寻找这样的东西:

print_r($GET);
/* output: $GET[one => 1, two => 2, ...] */

有函数来做这个吗?(因为array_push不能这样工作)


当前回答

简单的方法:

$GET = array();    
$key = 'one=1';
parse_str($key, $GET);

http://php.net/manual/de/function.parse-str.php

其他回答

不,关联数组没有等价的array_push(),因为没有办法确定下一个键。

你必须使用

$arrayname[indexname] = $value;

嗨,我也有同样的问题,我找到了这个解决方案,你应该使用两个数组,然后将它们结合起来

 <?php

$fname=array("Peter","Ben","Joe");

$age=array("35","37","43");

$c=array_combine($fname,$age);

print_r($c);

?>

参考:w3schools

佩卡就是这么说的…

或者,你也可以像这样使用array_merge:

array_merge($_GET, array($rule[0] => $rule[1]));

但我更喜欢Pekka的方法,因为它更简单。

2023

有很多答案。有些有用,有些不错,但有些尴尬。因为你不需要复杂而昂贵的算术运算,循环等简单的操作,如添加一个元素到数组,这里是我的一行添加到数组的函数集合。

$array = ['a' => 123, 'b' => 456]; // init Array

$array['c'] = 789; // 1.
$array += ['d' => '012']; // 2.
$array = array_merge($array, ['e' => 345]); // 3.
$array = [...$array, 'f' => 678]; // 4.

print_r($array);
// Output:
/* 
Array
(
    [a] => 123
    [b] => 456
    [c] => 789
    [d] => 012
    [e] => 345
    [f] => 678
)
*/

在99%的情况下,我使用版本1。($array['c'] = 789;)但我喜欢版本4。这是带有splat操作符的版本(https://www.php.net/manual/en/migration56.new-features.php)。

我想知道为什么最简单的方法还没有公布:

$arr = ['company' => 'Apple', 'product' => 'iPhone'];
$arr += ['version' => 8];