Я пытался поместить элемент в ассоциативный массив следующим образом:
$new_input['name'] = array(
'type' => 'text',
'label' => 'First name',
'show' => true,
'required' => true
);
array_push($options['inputs'], $new_input);
Однако вместо «имени» в качестве ключа добавляется число. Есть другой способ сделать это?
Ответы:
$options['inputs']['name'] = $new_input['name'];
источник
Вместо array_push () используйте array_merge ()
Он объединит два массива и объединит их элементы в один массив.
Пример кода -
$existing_array = array('a'=>'b', 'b'=>'c'); $new_array = array('d'=>'e', 'f'=>'g'); $final_array=array_merge($existing_array, $new_array);
Он возвращает результирующий массив в final_array. И результаты результирующего массива будут -
array('a'=>'b', 'b'=>'c','d'=>'e', 'f'=>'g')
Пожалуйста, просмотрите эту ссылку , чтобы быть в курсе возможных проблем.
источник
Это классная функция
function array_push_assoc($array, $key, $value){ $array[$key] = $value; return $array; }
Просто используйте
$myarray = array_push_assoc($myarray, 'h', 'hello');
Кредиты и объяснение
источник
Решение WebbieDave будет работать. Если вы не хотите перезаписывать что-либо, что уже могло быть на имени, вы также можете сделать что-то вроде этого:
$options['inputs']['name'][] = $new_input['name'];
источник
Если
$new_input
может содержать больше, чем просто элемент «имя», который вы, возможно, захотите использовать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);
источник
Ответ Кертиса был очень близок к тому, что мне было нужно, но я немного изменил его.
Где он использовал:
$options['inputs']['name'][] = $new_input['name'];
Я использовал:
$options[]['inputs']['name'] = $new_input['name'];
Вот мой фактический код с использованием запроса из БД:
while($row=mysql_fetch_array($result)){ $dtlg_array[]['dt'] = $row['dt']; $dtlg_array[]['lat'] = $row['lat']; $dtlg_array[]['lng'] = $row['lng']; }
Благодарность!
источник
я использую
php5.6
код :
$person = ["name"=>"mohammed", "age"=>30]; $person['addr'] = "Sudan"; print_r($person)
выход
Array( ["name"=>"mohammed", "age"=>30, "addr"=>"Sudan"] )
источник
Просто измените несколько фрагментов (используйте функцию array_merge): -
$options['inputs']=array_merge($options['inputs'], $new_input);
источник
$new_input = array('type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true); $options['inputs']['name'] = $new_input;
источник
Есть способ лучше:
Если массив $ arr_options содержит существующий массив.
$arr_new_input['name'] = [ 'type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true ]; $arr_options += $arr_new_input;
Предупреждение: $ arr_options должен существовать. если в $ arr_options уже есть ['name'], оно будет перезаписано.
Надеюсь это поможет.
источник
Можешь попробовать.
$options['inputs'] = $options['inputs'] + $new_input;
источник
Вы можете использовать array_merge ($ array1, $ array2) для объединения ассоциативного массива. Пример:
$a1=array("red","green"); $a2=array("blue","yellow"); print_r(array_merge($a1,$a2));
Выход:
Array ( [0] => red [1] => green [2] => blue [3] => yellow )
источник