Próbowałem przekazać element do tablicy asocjacyjnej, takiej jak ta:
$new_input['name'] = array(
'type' => 'text',
'label' => 'First name',
'show' => true,
'required' => true
);
array_push($options['inputs'], $new_input);
Jednak zamiast „name” jako klucz dodaje numer. Czy jest inny sposób, aby to zrobić?
Odpowiedzi:
$options['inputs']['name'] = $new_input['name'];
źródło
Zamiast array_push () użyj array_merge ()
Połączy dwie tablice i połączy ich elementy w jedną tablicę.
Przykładowy kod -
$existing_array = array('a'=>'b', 'b'=>'c'); $new_array = array('d'=>'e', 'f'=>'g'); $final_array=array_merge($existing_array, $new_array);
Zwraca wynikową tablicę w final_array. A wynikowa tablica będzie następować -
array('a'=>'b', 'b'=>'c','d'=>'e', 'f'=>'g')
Przejrzyj ten link , aby mieć świadomość możliwych problemów.
źródło
To fajna funkcja
function array_push_assoc($array, $key, $value){ $array[$key] = $value; return $array; }
Po prostu użyj
$myarray = array_push_assoc($myarray, 'h', 'hello');
Kredyty i wyjaśnienie
źródło
Rozwiązanie WebbieDave zadziała. Jeśli nie chcesz nadpisywać niczego, co może już znajdować się w polu „nazwa”, możesz też zrobić coś takiego:
$options['inputs']['name'][] = $new_input['name'];
źródło
Jeśli
$new_input
może zawierać więcej niż tylko element „nazwa”, którego możesz chcieć użyć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);
źródło
Odpowiedź Curtisa była bardzo bliska temu, czego potrzebowałem, ale trochę ją zmieniłem.
Gdzie używał:
$options['inputs']['name'][] = $new_input['name'];
Użyłem:
$options[]['inputs']['name'] = $new_input['name'];
Oto mój rzeczywisty kod wykorzystujący zapytanie z bazy danych:
while($row=mysql_fetch_array($result)){ $dtlg_array[]['dt'] = $row['dt']; $dtlg_array[]['lat'] = $row['lat']; $dtlg_array[]['lng'] = $row['lng']; }
Dzięki!
źródło
używam
php5.6
kod :
$person = ["name"=>"mohammed", "age"=>30]; $person['addr'] = "Sudan"; print_r($person)
wynik
Array( ["name"=>"mohammed", "age"=>30, "addr"=>"Sudan"] )
źródło
Po prostu zmień kilka fragmentów (użyj funkcji array_merge): -
$options['inputs']=array_merge($options['inputs'], $new_input);
źródło
$new_input = array('type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true); $options['inputs']['name'] = $new_input;
źródło
Jest na to lepszy sposób:
Jeśli tablica $ arr_options zawiera istniejącą tablicę.
$arr_new_input['name'] = [ 'type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true ]; $arr_options += $arr_new_input;
Ostrzeżenie: $ arr_options musi istnieć. jeśli $ arr_options ma już ['name'], zostanie nadpisane.
Mam nadzieję że to pomoże.
źródło
Możesz spróbować.
$options['inputs'] = $options['inputs'] + $new_input;
źródło
Możesz użyć array_merge ($ tablica1, $ tablica2), aby scalić tablicę asocjacyjną. Przykład:
$a1=array("red","green"); $a2=array("blue","yellow"); print_r(array_merge($a1,$a2));
Wynik:
Array ( [0] => red [1] => green [2] => blue [3] => yellow )
źródło