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?

ryudice.dll
sumber
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:

131
$options['inputs']['name'] = $new_input['name'];
webbiedave
sumber
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.

Murtaza Khursheed Hussain
sumber
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

Ajmal Salim
sumber
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'];

Curtis
sumber
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);
thetaiko
sumber
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!

Steven H.
sumber
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"] )
ebnibrahem.dll
sumber
2

Ubah saja beberapa cuplikan (gunakan fungsi array_merge): -

  $options['inputs']=array_merge($options['inputs'], $new_input);
vineet
sumber
1
$new_input = array('type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true);
$options['inputs']['name'] = $new_input;
Ryan Kinal
sumber
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.

Henry
sumber
0

Anda dapat mencoba.

$options['inputs'] = $options['inputs'] + $new_input;
Adnan Ahmad
sumber
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 )
Mamun Sabuj
sumber