Dorong item ke array asosiatif di PHP


92

Saya telah mencoba untuk mendorong item ke array asosiatif seperti ini:

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

Namun, alih-alih 'nama' sebagai kunci dalam menambahkan angka. Apakah ada cara lain untuk melakukannya?


Tidak mungkin mendorong array ke array lain. Saya sudah mencoba semua opsi ini dan penggabungan baru saja menambahkan array. Saya memecahkan masalah saya dengan Kelas.
Alex Benincasa Santos

Jawaban:



62

Alih-alih array_push () , gunakan array_merge ()

Ini akan menggabungkan dua array dan menggabungkan item mereka dalam satu array.

Kode Contoh -

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

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

Ini mengembalikan larik yang dihasilkan di final_array. Dan hasil dari larik yang dihasilkan akan menjadi -

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

Harap tinjau tautan ini , untuk mengetahui kemungkinan masalah.


1
sebenarnya itu harus $ existing_array = array ('a' => 'b', 'b' => 'c'); $ new_array = larik ('d' => 'e', ​​'f' => 'g'); $ result = array_merge ($ existing_array, $ new_array);
Calvin Chan

1
baik itu adalah akal sehat untuk mengumpulkan keluaran. Saya baru saja memberikan ide. Salam
Murtaza Khursheed Hussain

17

Ini adalah fungsi yang keren

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

Gunakan saja

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

Kredit & Penjelasan


7

Solusi WebbieDave akan berfungsi. Jika Anda tidak ingin menimpa apa pun yang mungkin sudah ada di 'name', Anda juga dapat melakukan sesuatu seperti ini:

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


Ini tidak berfungsi jika Anda tidak ingin menyimpan semua asosiatif, misalnya tanpa mendorong larik bernomor lain di antaranya.
Silakan lihat @Steven

4

Jika $new_inputmungkin berisi lebih dari sekedar elemen 'nama' yang mungkin ingin Anda gunakan 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

Jawaban Curtis sangat dekat dengan apa yang saya butuhkan, tetapi saya mengubahnya sedikit.

Dimana dia menggunakan:

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

Saya menggunakan:

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

Inilah kode saya yang sebenarnya menggunakan kueri dari DB:

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

Terima kasih!


3

saya menggunakan php5.6

kode :

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

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

print_r($person) 

keluaran

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

2

Ubah saja beberapa cuplikan (gunakan fungsi array_merge): -

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

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

1

Ada cara yang lebih baik untuk melakukan ini:

Jika array $ arr_options berisi array yang sudah ada.

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

$arr_options += $arr_new_input;

Peringatan: $ arr_options harus ada. jika $ arr_options sudah memiliki ['name'] itu akan ditimpa.

Semoga ini membantu.


0

Anda dapat mencoba.

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

0

Anda dapat menggunakan array_merge ($ array1, $ array2) untuk menggabungkan array asosiatif. Contoh:

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

Keluaran:

Array ( [0] => red [1] => green [2] => blue [3] => yellow )
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.