J'ai essayé de pousser un élément vers un tableau associatif comme celui-ci:
$new_input['name'] = array(
'type' => 'text',
'label' => 'First name',
'show' => true,
'required' => true
);
array_push($options['inputs'], $new_input);
Cependant, au lieu de «nom» comme clé, ajoute un nombre. Y a-t-il une autre façon de le faire?
Réponses:
$options['inputs']['name'] = $new_input['name'];
la source
Au lieu de array_push () , utilisez array_merge ()
Il fusionnera deux tableaux et combinera leurs éléments dans un seul tableau.
Exemple de code -
$existing_array = array('a'=>'b', 'b'=>'c'); $new_array = array('d'=>'e', 'f'=>'g'); $final_array=array_merge($existing_array, $new_array);
Il renvoie le tableau résultant dans le final_array. Et les résultats du tableau résultant seront -
array('a'=>'b', 'b'=>'c','d'=>'e', 'f'=>'g')
Veuillez consulter ce lien pour être conscient des problèmes éventuels.
la source
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 et explication
la source
La solution de WebbieDave fonctionnera. Si vous ne voulez pas écraser quoi que ce soit qui pourrait déjà être dans 'nom', vous pouvez également faire quelque chose comme ceci:
$options['inputs']['name'][] = $new_input['name'];
la source
If
$new_input
peut contenir plus qu'un simple élément «name» que vous voudrez peut-être utiliserarray_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);
la source
La réponse de Curtis était très proche de ce dont j'avais besoin, mais je l'ai un peu modifiée.
Où il a utilisé:
$options['inputs']['name'][] = $new_input['name'];
J'ai utilisé:
$options[]['inputs']['name'] = $new_input['name'];
Voici mon code réel utilisant une requête d'une base de données:
while($row=mysql_fetch_array($result)){ $dtlg_array[]['dt'] = $row['dt']; $dtlg_array[]['lat'] = $row['lat']; $dtlg_array[]['lng'] = $row['lng']; }
Merci!
la source
j'utilise
php5.6
code :
$person = ["name"=>"mohammed", "age"=>30]; $person['addr'] = "Sudan"; print_r($person)
production
Array( ["name"=>"mohammed", "age"=>30, "addr"=>"Sudan"] )
la source
Changez simplement quelques extraits (utilisez la fonction array_merge): -
$options['inputs']=array_merge($options['inputs'], $new_input);
la source
$new_input = array('type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true); $options['inputs']['name'] = $new_input;
la source
Il existe une meilleure façon de procéder:
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.
la source
Tu peux essayer.
$options['inputs'] = $options['inputs'] + $new_input;
la source
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));
Production:
Array ( [0] => red [1] => green [2] => blue [3] => yellow )
la source