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?


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:



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.


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


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


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

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!


2

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

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

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"] )

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

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.


0

Du kannst es versuchen.

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

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 )

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


2
Können Sie das weiter erklären?
Nico Haase
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.