如何将数值和键都推到数组中

看看这个代码:

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

我正在寻找这样的事情:

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

有这样的function吗? (因为array_push不会以这种方式工作)

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

你必须使用

 $arrayname[indexname] = $value; 

将值入数组会自动为其创build一个数字键。

向数组添加键值对时,您已经拥有了该键,您不需要为其创build一个键。 将一个键推入数组没有任何意义。 您只能设置数组中特定键的值。

 // no key array_push($array, $value); // same as: $array[] = $value; // key already known $array[$key] = $value; 

您可以使用联合运算符( + )来组合数组,并保留添加的数组的键。 例如:

 <?php $arr1 = array('foo' => 'bar'); $arr2 = array('baz' => 'bof'); $arr3 = $arr1 + $arr2; print_r($arr3); // prints: // array( // 'foo' => 'bar', // 'baz' => 'bof', // ); 

所以你可以做$_GET += array('one' => 1);

http://php.net/manual/en/function.array-merge.php文档中有关于union运算符vs array_merge的更多信息。

究竟是什么佩卡说…

或者,你可以像这样使用array_merge,如果你想要的话:

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

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

我想添加我的答案,在这里是这样的:

 //connect to db ...etc $result_product = /*your mysql query here*/ $array_product = array(); $i = 0; foreach ($result_product as $row_product) { $array_product [$i]["id"]= $row_product->id; $array_product [$i]["name"]= $row_product->name; $i++; } //you can encode the array to json if you want to send it to an ajax call $json_product = json_encode($array_product); echo($json_product); 

希望这会帮助别人

我只是在寻找同样的东西,我意识到,再一次,我的想法是不同的,因为我是老派。 我一路回到BASIC和PERL,有时候我忘记了在PHP中真正的事情。

我只是让这个函数从数据库中取3列的所有设置。 设置键,项目(键)和值(值),并使用相同的键/值将它们放入一个名为settings的数组中,而不用像上面那样使用push。

真的很容易和简单


 //获取所有设置
 $设置= getGlobalSettings();


 //应用用户主题select
 $ theme_choice = $ settings ['theme'];

 ..等等等等...




函数getGlobalSettings(){

     $ dbc = mysqli_connect(wds_db_host,wds_db_user,wds_db_pass)或死(“MySQL Error:”。mysqli_error());
     mysqli_select_db($ dbc,wds_db_name)或者死(“MySQL Error:”。mysqli_error());
     $ MySQL =“SELECT * FROM systemSettings”;
     $ result = mysqli_query($ dbc,$ MySQL);
     while($ row = mysqli_fetch_array($ result)) 
         {
         $ settings [$ row ['item']] = $ row ['value'];  //不需要推
         }
     mysqli_close($ DBC);
返回$设置;
 }


所以像其他post解释…在PHP中,没有必要“推”一个数组,当你使用

键=>值

AND …没有必要先定义数组。

$arrays=arrays();

不需要定义或推送。 只要分配$ array [$ key] = $ value; 这是自动推和声明在同一时间。

我必须补充说,出于安全原因,(P)或(H)无限(P)保护,我的意思是编程傻瓜,我的意思是PHP …. hehehe我build议你只使用这个概念为我的意图。 任何其他方法都可能是安全风险。 在那里,做了我的免责声明!

这是对你有用的解决scheme

 Class Form { # Declare the input as property private $Input = []; # Then push the array to it public function addTextField($class,$id){ $this->Input ['type'][] = 'text'; $this->Input ['class'][] = $class; $this->Input ['id'][] = $id; } } $form = new Form(); $form->addTextField('myclass1','myid1'); $form->addTextField('myclass2','myid2'); $form->addTextField('myclass3','myid3'); 

当你转储它。 结果就是这样

 array (size=3) 'type' => array (size=3) 0 => string 'text' (length=4) 1 => string 'text' (length=4) 2 => string 'text' (length=4) 'class' => array (size=3) 0 => string 'myclass1' (length=8) 1 => string 'myclass2' (length=8) 2 => string 'myclass3' (length=8) 'id' => array (size=3) 0 => string 'myid1' (length=5) 1 => string 'myid2' (length=5) 2 => string 'myid3' (length=5) 

有点奇怪,但是这对我有效

  $array1 = array("Post Slider", "Post Slider Wide", "Post Slider"); $array2 = array("Tools Sliders", "Tools Sliders", "modules-test"); $array3 = array(); $count = count($array1); for($x = 0; $x < $count; $x++){ $array3[$array1[$x].$x] = $array2[$x]; } foreach($array3 as $key => $value){ $output_key = substr($key, 0, -1); $output_value = $value; echo $output_key.": ".$output_value."<br>"; } 

有点晚,但如果你不介意嵌套数组,你可以采取这种方法:

 $main_array = array(); //Your array that you want to push the value into $value = 10; //The value you want to push into $main_array array_push($main_array, array('Key' => $value)); 

为了澄清,如果你输出的json_encode($ main_array)看起来像[{“Key”:“10”}]

  $arr = array("key1"=>"value1", "key2"=>"value"); print_r($arr); 

//打印数组['key1'=>“value1”,“key2”=>“value2”]

 array_push($arr, ['key1' => $value1, 'key2' => value2]); 

这工作得很好。 用它在数组中的值创build键

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

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

这和使用array_merge将两个数组合并在一起是一样的。

嗨,我有同样的问题,我觉得这个解决scheme,你应该使用两个数组,然后将他们两个

  <?php $fname=array("Peter","Ben","Joe"); $age=array("35","37","43"); $c=array_combine($fname,$age); print_r($c); ?> 

参考: w3schools

简单的方法:

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

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