How to push both value and key into array

匿名 (未验证) 提交于 2019-12-03 02:08:02

问题:

Take a look at this code:

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

I'm looking for something like this so that:

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

Is there a function to do this? (because array_push won't work this way)

回答1:

Nope, there is no array_push() equivalent for associative arrays because there is no way determine the next key.

You'll have to use

$arrayname[indexname] = $value; 


回答2:

Pushing a value into an array automatically creates a numeric key for it.

When adding a key-value pair to an array, you already have the key, you don't need one to be created for you. Pushing a key into an array doesn't make sense. You can only set the value of the specific key in the array.

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


回答3:

You can use the union operator (+) to combine arrays and keep the keys of the added array. For example:

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

So you could do $_GET += array('one' => 1);.

There's more info on the usage of the union operator vs array_merge in the documentation at http://php.net/manual/en/function.array-merge.php.



回答4:

Exactly what Pekka said...

Alternatively, you can probably use array_merge like this if you wanted:

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

But I'd prefer Pekka's method probably as it is much simpler.



回答5:

I would like to add my answer to the table and here it is :

//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); 

hope that this will help somebody



回答6:

I was just looking for the same thing and I realized that, once again, my thinking is different because I am old school. I go all the way back to BASIC and PERL and sometimes I forget how easy things really are in PHP.

I just made this function to take all settings from the database where their are 3 columns. setkey, item (key) & value (value) and place them into an array called settings using the same key/value without using push just like above.

Pretty easy & simple really

  // Get All Settings $settings=getGlobalSettings();   // Apply User Theme Choice $theme_choice = $settings['theme'];  .. etc etc etc ....     function getGlobalSettings(){      $dbc = mysqli_connect(wds_db_host, wds_db_user, wds_db_pass) or die("MySQL Error: " . mysqli_error());     mysqli_select_db($dbc, wds_db_name) or die("MySQL Error: " . mysqli_error());     $MySQL = "SELECT * FROM systemSettings";     $result = mysqli_query($dbc, $MySQL);     while($row = mysqli_fetch_array($result))          {         $settings[$row['item']] = $row['value'];   // NO NEED FOR PUSH         }     mysqli_close($dbc); return $settings; }   

So like the other posts explain... In php there is no need to "PUSH" an array when you are using

Key => Value

AND... There is no need to define the array first either.

$array=array();

Don't need to define or push. Just assign $array[$key] = $value; It is automatically a push and a declaration at the same time.

I must add that for security reasons, (P)oor (H)elpless (P)rotection, I means Programming for Dummies, I mean PHP.... hehehe I suggest that you only use this concept for what I intended. Any other method could be a security risk. There, made my disclaimer!



回答7:

This is the solution that may useful for u

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'); 

When you dump it. The result like this

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) 


回答8:

A bit weird, but this worked for me

    $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>";     } 


回答9:

A bit late but if you don't mind a nested array you could take this approach:

$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)); 

To clarify, if you output json_encode($main_array) that will look like [{"Key":"10"}]



回答10:

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

// prints array['key1'=>"value1", 'key2'=>"value2"]



回答11:

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

This works just fine. creates the the key with its value in the array



回答12:

I wonder why the most simpliest method hasn't been posted yet:

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

It's the same like merging two arrays together with array_merge.



回答13:

hi i had same problem i find this solution you should use two arrays then combine them both

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

reference : w3schools



回答14:

The simple way:

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

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



回答15:

array_push($GET, $GET['one']=1);

works for me



回答16:

Example array_merge()....

$array1 = array("color" => "red", 2, 4); $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4); $result = array_merge($array1, $array2); print_r($result);

Array([color] => green,[0] => 2,[1] => 4,[2] => a,[3] => b,[shape] => trapezoid,[4] => 4,)



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!