Schieben Sie das Element in ein assoziatives Array in PHP

89

Ich habe versucht, ein Element wie folgt in ein assoziatives Array zu verschieben:

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

Anstelle von 'Name' als Schlüssel wird jedoch eine Nummer hinzugefügt. Gibt es einen anderen Weg, es zu tun?

Ryudice
quelle
Es ist nicht möglich, ein Array in ein anderes Array zu verschieben. Ich habe alle diese Optionen ausprobiert und beim Zusammenführen wurde das Array hinzugefügt. Ich habe mein Problem mit einer Klasse gelöst.
Alex B. Santos

Antworten:

126
$options['inputs']['name'] = $new_input['name'];
webbiedave
quelle
60

Verwenden Sie anstelle von array_push () array_merge ()

Es werden zwei Arrays zusammengeführt und ihre Elemente in einem einzigen Array kombiniert.

Beispielcode -

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

$final_array=array_merge($existing_array, $new_array);

Es gibt das resultierende Array im final_array zurück. Und die Ergebnisse des resultierenden Arrays sind -

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

Bitte überprüfen Sie diesen Link , um mögliche Probleme zu erkennen.

Murtaza Khursheed Hussain
quelle
1
eigentlich sollte es $ existent_array = array sein ('a' => 'b', 'b' => 'c'); $ new_array = array ('d' => 'e', ​​'f' => 'g'); $ result = array_merge ($ existierendes_array, $ neues_array);
Calvin Chan
1
Nun, es ist ein gesunder Menschenverstand, Output zu sammeln. Ich gab nur die Idee. Grüße
Murtaza Khursheed Hussain
17

Dies ist eine coole Funktion

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

Benutz einfach

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

Credits & Erklärung

Ajmal Salim
quelle
7

Die Lösung von WebbieDave wird funktionieren. Wenn Sie nichts überschreiben möchten, das möglicherweise bereits unter "Name" steht, können Sie auch Folgendes tun:

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

Curtis
quelle
Dies funktioniert nicht, wenn Sie nicht alles assoziativ halten möchten, z. B. ohne andere nummerierte Arrays dazwischen zu schieben. Werfen Sie einen Blick auf @Steven H unten
Brianlmerritt
4

Wenn $new_inputes mehr als nur ein 'name'-Element enthält, das Sie möglicherweise verwenden möchten 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);
Thetaiko
quelle
3

Curtis 'Antwort war sehr nah an dem, was ich brauchte, aber ich habe sie ein wenig geändert.

Wo er verwendet hat:

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

Ich benutzte:

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

Hier ist mein tatsächlicher Code, der eine Abfrage aus einer Datenbank verwendet:

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

Vielen Dank!

Steven H.
quelle
2

Ändern Sie einfach einige Ausschnitte (verwenden Sie die Funktion array_merge): -

  $options['inputs']=array_merge($options['inputs'], $new_input);
Weinstock
quelle
2

ich benutze php5.6

Code :

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

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

print_r($person) 

Ausgabe

Array( ["name"=>"mohammed", "age"=>30, "addr"=>"Sudan"] )
ebnibrahem
quelle
1
$new_input = array('type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true);
$options['inputs']['name'] = $new_input;
Ryan Kinal
quelle
1

Es gibt einen besseren Weg, dies zu tun:

Wenn das Array $ arr_options das vorhandene Array enthält.

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

$arr_options += $arr_new_input;

Warnung: $ arr_options muss vorhanden sein. Wenn $ arr_options bereits einen ['name'] hat, wird dieser überschrieben.

Hoffe das hilft.

Henry
quelle
0

Du kannst es versuchen.

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

Sie können array_merge ($ array1, $ array2) verwenden, um das assoziative Array zusammenzuführen. Beispiel:

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

Ausgabe:

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

Zunächst müssen Sie ein Array definieren

 $myArray= array();

Dann können Sie alles auf Ihr Array verschieben, hier versuche ich es mit einem assoziativen Array

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

Sie können das geänderte Array in PHP sehen:

print_r($myArray);

Ergebnis: Array ([0] => Array ([id] => 23 [Kategorie] => aaa))

Nasser Ali Karimi
quelle
2
Können Sie das weiter erklären?
Nico Haase