Öğeyi PHP'deki ilişkisel diziye itin


92

Bir öğeyi aşağıdaki gibi ilişkilendirilebilir bir diziye göndermeye çalışıyorum:

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

Ancak, anahtar olarak 'ad' yerine bir sayı ekler. Bunu yapmanın başka bir yolu var mı?


Bir diziyi başka bir diziye yerleştirmek mümkün değildir. Tüm bu seçenekleri denedim ve birleştirme az önce diziyi ekledi. Sorunumu bir Sınıf ile çözdüm.
Alex Benincasa Santos

Yanıtlar:



62

Array_push () yerine array_merge () kullanın

İki diziyi birleştirecek ve öğelerini tek bir dizide birleştirecektir.

Örnek Kod -

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

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

Son_dizideki sonuç dizisini döndürür. Ve ortaya çıkan dizinin sonuçları -

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

Olası sorunlardan haberdar olmak için lütfen bu bağlantıyı inceleyin .


1
aslında $ mevcut_dizi = array ('a' => 'b', 'b' => 'c') olmalıdır; $ yeni_dizi = array ('d' => 'e', ​​'f' => 'g'); $ sonuç = dizi_birleştirme ($ varolan_dizi, $ yeni_dizi);
Calvin Chan

1
çıktı toplamak sağduyu. Ben sadece fikir veriyordum. Saygılarımızla
Murtaza Khursheed Hussain

17

Bu harika bir işlev

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

Sadece kullan

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

Krediler ve Açıklama


7

WebbieDave'nin çözümü işe yarayacak. Halihazırda 'ad'da bulunan herhangi bir şeyin üzerine yazmak istemiyorsanız, şuna benzer bir şey de yapabilirsiniz:

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


Her şeyi ilişkilendirilebilir tutmak istemiyorsanız, örneğin aradaki diğer numaralandırılmış dizileri itmeden bu işe yaramaz. Aşağıdaki @Steven H'ye bir göz atın
brianlmerritt

4

Eğer $new_inputdaha adil bir 'isim' eleman daha içerebilir kullanmak isteyebilirsiniz 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'in cevabı ihtiyacım olana çok yakındı ama ben biraz değiştirdim.

Nerede kullandı:

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

Kullandım:

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

İşte bir DB'den bir sorgu kullanan gerçek kodum:

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

Teşekkürler!


3

kullanırım php5.6

kod :

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

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

print_r($person) 

çıktı

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

2

Yalnızca birkaç parçacığı değiştirin (array_merge işlevini kullanın): -

  $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

Bunu yapmanın daha iyi bir yolu var:

$ Dizi_seçenekleri mevcut diziyi içeriyorsa.

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

$arr_options += $arr_new_input;

Uyarı: $ arr_options mevcut olmalıdır. $ arr_options zaten bir ['isim'] içeriyorsa, üzerine yazılacaktır.

Bu yardımcı olur umarım.


0

Deneyebilirsin.

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

0

İlişkili diziyi birleştirmek için dizi_merge ($ dizi1, $ dizi2) kullanabilirsiniz. Misal:

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

Çıktı:

Array ( [0] => red [1] => green [2] => blue [3] => yellow )
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.