web-dev-qa-db-fra.com

Envoie un élément à un tableau associatif dans PHP

J'ai essayé de pousser un élément dans un tableau associatif comme ceci:

$new_input['name'] = array(
    'type' => 'text', 
    'label' => 'First name', 
    'show' => true, 
    'required' => true
);
array_Push($options['inputs'], $new_input);

Cependant, au lieu de "nom", la clé ajoute un nombre. Y a-t-il une autre façon de le faire?

69
ryudice
$options['inputs']['name'] = $new_input['name'];
96
webbiedave

Au lieu de array_Push (), utilisez array_merge ()

$existing_array = array('a'=>'b', 'b'=>'c');
$new_array = array('d'=>'e', 'f'=>'g');

array_merge($existing_array, $new_array);

Elle retourne le tableau résultant ajouté dans le tableau initial dans ce cas, $existing_array

Et le tableau résultant sera

array('a'=>'b', 'b'=>'c','d'=>'e', 'f'=>'g')

Veuillez consulter ce lien link pour être au courant des problèmes éventuels.

C'est une fonction cool

function array_Push_assoc($array, $key, $value){
$array[$key] = $value;
return $array;
}

Juste utiliser

$myarray = array_Push_assoc($myarray, 'h', 'hello');

Crédits & Explications

10
Ajmal Salim

La solution de WebbieDave fonctionnera. Si vous ne voulez pas écraser quoi que ce soit qui pourrait déjà être nommé 'nom', vous pouvez aussi faire quelque chose comme ça:

$options['inputs']['name'][] = $new_input['name'];

7
Curtis

Si $new_input peut contenir plus qu'un élément 'name', vous voudrez peut-être utiliser array_merge.

$new_input = array('name'=>array(), 'details'=>array());
$new_input['name'] = array('type'=>'text', 'label'=>'First name'...);
$options['inputs'] = array_merge($options['inputs'], $new_input);
3
thetaiko

La réponse de Curtis était très proche de ce dont j'avais besoin, mais je l'ai changée un peu. 

Où il a utilisé:

$options['inputs']['name'][] = $new_input['name'];

J'ai utilisé:

$options[]['inputs']['name'] = $new_input['name'];

Voici mon code actuel utilisant une requête d'un DB:

while($row=mysql_fetch_array($result)){ 
    $dtlg_array[]['dt'] = $row['dt'];
    $dtlg_array[]['lat'] = $row['lat'];
    $dtlg_array[]['lng'] = $row['lng'];
}

Merci!

3
Steven H

Il suffit de changer quelques extraits (utilisez la fonction array_merge): -

  $options['inputs']=array_merge($options['inputs'], $new_input);
2
vineet
$new_input = array('type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true);
$options['inputs']['name'] = $new_input;
1
Ryan Kinal

Vous pouvez utiliser array_merge ($ array1, $ array2) pour fusionner le tableau associatif . Exemple:

$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_merge($a1,$a2));

Sortie: 

Array ( [0] => red [1] => green [2] => blue [3] => yellow )
0
Mamun Sabuj

Il y a une meilleure façon de faire ceci:

Si le tableau $ arr_options contient le tableau existant.

$arr_new_input['name'] = [
    'type' => 'text', 
    'label' => 'First name', 
    'show' => true, 
    'required' => true
];

$arr_options += $arr_new_input;

Attention: $ arr_options doit exister . Si $ arr_options a déjà un ['nom'], il sera écrasé.

J'espère que cela t'aides.

0
Henry

Tu peux essayer.

$options['inputs'] = $options['inputs'] + $new_input;
0
Adnan Ahmad

j'utilise php5.6

code

$person = ["name"=>"mohammed", "age"=>30];

$person['addr'] = "Sudan";

print_r($person) 

sortie  

Array( ["name"=>"mohammed", "age"=>30, "addr"=>"Sudan"] )
0
ebnibrahem

Tout d’abord, vous devez définir un tableau

 $myArray= array();

Ensuite, vous pouvez rien pousser dans votre tableau, ici je tente avec un tableau associatif

    array_Push( $myArray ,array('id'=>23, 'category'=>'aaa'));

Vous pouvez voir le tableau modifié en php:

print_r($myArray);

Résultat: Array ([0] => Array ([id] => 23 [catégorie] => aaa))

0
Nasser