web-dev-qa-db-fra.com

Comment insérer la valeur et la clé dans un tableau

Jetez un oeil à ce code:

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

Je cherche quelque chose comme ça pour que:

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

Y a-t-il une fonction pour faire cela? (parce que array_Push ne fonctionnera pas de cette façon)

285
Gal

Non, il n'y a pas d'équivalent array_Push() pour les tableaux associatifs car il est impossible de déterminer la clé suivante. 

Vous devrez utiliser

$arrayname[indexname] = $value;
631
Pekka 웃

L'enfoncement d'une valeur dans un tableau crée automatiquement une clé numérique pour celui-ci.

Lorsque vous ajoutez une paire clé-valeur à un tableau, vous avez déjà la clé. Vous n'avez pas besoin de la créer pour vous. Pousser une clé dans un tableau n'a pas de sens. Vous pouvez uniquement définir la valeur de la clé spécifique dans le tableau.

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

// key already known
$array[$key] = $value;
65
deceze

Vous pouvez utiliser l'opérateur d'union (+) pour combiner des tableaux et conserver les clés du tableau ajouté. Par exemple:

<?php

$arr1 = array('foo' => 'bar');
$arr2 = array('baz' => 'bof');
$arr3 = $arr1 + $arr2;

print_r($arr3);

// prints:
// array(
//   'foo' => 'bar',
//   'baz' => 'bof',
// );

Donc, vous pourriez faire $_GET += array('one' => 1);

Plus d'informations sur l'utilisation de l'opérateur union vs array_merge dans la documentation à http://php.net/manual/fr/function.array-merge.php .

51
Charlie Schliesser

Exactement ce que Pekka a dit ...

Alternativement, vous pouvez probablement utiliser array_merge comme ceci si vous vouliez:

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

Mais je préférerais probablement la méthode de Pekka car elle est beaucoup plus simple.

17
jeffff

J'aimerais ajouter ma réponse au tableau et la voici:

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

espérons que cela aidera quelqu'un

17
Nassim

C’est la solution qui peut vous être utile

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

Quand vous le jetez. Le résultat comme ça

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)
7
Faris Rayhan

Je cherchais simplement la même chose et je me suis rendu compte que, encore une fois, ma façon de penser est différente parce que je suis vieille école. Je retourne à BASIC et à Perl et parfois j'oublie à quel point les choses sont simples en PHP.

Je viens de faire cette fonction pour prendre tous les paramètres de la base de données où ils sont 3 colonnes. setkey, item (clé) & valeur (valeur) et placez-les dans un tableau appelé paramètres utilisant la même clé/valeur sans utiliser Push, exactement comme ci-dessus.

Assez facile et simple vraiment


 // Obtenir tous les paramètres 
 $ Settings = getGlobalSettings (); 


 // Appliquer le choix du thème de l'utilisateur 
 $ Theme_choice = $ settings ['theme']; 

.. etc etc etc ....




 function getGlobalSettings () {

 $ dbc = mysqli_connect (wds_db_Host, wds_db_user, wds_db_pass) ou die ("Erreur MySQL:". mysqli_error ()); 
 mysqli_select_db ($ dbc, wds_db_name) ou die ("Erreur MySQL:". mysqli_error ()); 
 $ MySQL = "SELECT * FROM systemSettings"; 
 $ result = mysqli_query ($ dbc, $ MySQL); 
 while ($ row = mysqli_fetch_array ($ result)) 
 {
 $ settings [$ row ['item']] = $ row ['value']; // PAS BESOIN DE Push 
 } 
 mysqli_close ($ dbc); 
 return $ settings; 
} 


Donc, comme les autres messages expliquent ... Dans PHP, il n'est pas nécessaire de "Push" un tableau lorsque vous utilisez 

Clé => valeur

AND ... Il n'est pas nécessaire de définir le tableau en premier non plus. 

$ array = array ();

Pas besoin de définir ou Push. Assignez simplement $ array [$ key] = $ value; C'est automatiquement un Push et une déclaration en même temps.

Je dois ajouter que pour des raisons de sécurité, (P) pour (H) sans protection (P) rotection, je veux dire Programmation pour les nuls, je veux dire PHP .... hehehe, je suggère que vous utilisiez ce concept uniquement pour ce que je voulais. Toute autre méthode pourrait constituer un risque pour la sécurité. Là, fait mon disclaimer!

7
Cory Cullers

Un peu bizarre, mais cela a fonctionné pour moi

    $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>";
    }
4
Bjorn Lottering
 $arr = array("key1"=>"value1", "key2"=>"value");
    print_r($arr);

// affiche un tableau ['key1' => "valeur1", 'clé2' => "valeur2"]

3
sneha

Un peu tard, mais si un tableau imbriqué ne vous dérange pas, vous pouvez adopter cette approche:

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

Pour clarifier, Si vous affichez json_encode ($ main_array) qui ressemblera à [{"Key": "10"}]

3
Pontus B

Je me demande pourquoi la méthode la plus simple n'a pas encore été publiée: 

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

C'est la même chose que de fusionner deux tableaux avec array_merge.

2
AlexioVay

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

travaille pour moi

2
aaa

La manière simple:

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

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

1
eSlider
array_Push($arr, ['key1' => $value1, 'key2' => value2]);

Cela fonctionne très bien . Crée la clé avec sa valeur dans le tableau 

1
Mesh Manuel

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

Tableau ([couleur] => vert, [0] => 2, [1] => 4, [2] => a, [3] => b, [forme] => trapèze, [4] => 4 ,)

1
illeas

salut j'ai eu le même problème je trouve cette solution, vous devez utiliser deux tableaux puis combinez les deux

 <?php

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

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

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

print_r($c);

?>

référence: w3schools

1
fantome195

Pour ajouter à la première position avec key et value

$newAarray = [newIndexname => newIndexValue] ;

$yourArray = $newAarray + $yourArray ;
0
Mahdi Bashirpour

J'ai écrit une fonction simple:

function Push(&$arr,$new) {
    $arr = array_merge($arr,$new);
}

pour pouvoir "upsert" facilement un nouvel élément:

Push($my_array, ['a'=>1,'b'=>2])
0
Elect2