Tenho tentado empurrar um item para uma matriz associativa como esta:
$new_input['name'] = array(
'type' => 'text',
'label' => 'First name',
'show' => true,
'required' => true
);
array_push($options['inputs'], $new_input);
No entanto, em vez de 'nome' como a tecla, adiciona um número. tem outro jeito de fazer isto?
Respostas:
$options['inputs']['name'] = $new_input['name'];
fonte
Em vez de array_push () , use array_merge ()
Ele irá mesclar dois arrays e combinar seus itens em um único array.
Código de exemplo -
$existing_array = array('a'=>'b', 'b'=>'c'); $new_array = array('d'=>'e', 'f'=>'g'); $final_array=array_merge($existing_array, $new_array);
Ele retorna a matriz resultante no final_array. E os resultados da matriz resultante serão -
array('a'=>'b', 'b'=>'c','d'=>'e', 'f'=>'g')
Reveja este link para estar ciente de possíveis problemas.
fonte
Esta é uma função legal
function array_push_assoc($array, $key, $value){ $array[$key] = $value; return $array; }
Apenas use
$myarray = array_push_assoc($myarray, 'h', 'hello');
Créditos e explicação
fonte
A solução da WebbieDave funcionará. Se você não quiser sobrescrever nada que já esteja em 'nome', você também pode fazer algo assim:
$options['inputs']['name'][] = $new_input['name'];
fonte
Ele
$new_input
pode conter mais do que apenas um elemento de 'nome' que você pode querer usararray_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);
fonte
A resposta de Curtis foi muito próxima do que eu precisava, mas mudei um pouco.
Onde ele usou:
$options['inputs']['name'][] = $new_input['name'];
Eu usei:
$options[]['inputs']['name'] = $new_input['name'];
Este é meu código real usando uma consulta de um banco de dados:
while($row=mysql_fetch_array($result)){ $dtlg_array[]['dt'] = $row['dt']; $dtlg_array[]['lat'] = $row['lat']; $dtlg_array[]['lng'] = $row['lng']; }
Obrigado!
fonte
eu uso
php5.6
código :
$person = ["name"=>"mohammed", "age"=>30]; $person['addr'] = "Sudan"; print_r($person)
resultado
Array( ["name"=>"mohammed", "age"=>30, "addr"=>"Sudan"] )
fonte
Basta alterar alguns snippet (use a função array_merge): -
$options['inputs']=array_merge($options['inputs'], $new_input);
fonte
$new_input = array('type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true); $options['inputs']['name'] = $new_input;
fonte
Existe uma maneira melhor de fazer isso:
Se o array $ arr_options contém o array existente.
$arr_new_input['name'] = [ 'type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true ]; $arr_options += $arr_new_input;
Aviso: $ arr_options deve existir. se $ arr_options já tiver um ['nome'], ele será sobrescrito.
Espero que isto ajude.
fonte
Podes tentar.
$options['inputs'] = $options['inputs'] + $new_input;
fonte
Você pode usar array_merge ($ array1, $ array2) para mesclar o array associativo. Exemplo:
$a1=array("red","green"); $a2=array("blue","yellow"); print_r(array_merge($a1,$a2));
Resultado:
Array ( [0] => red [1] => green [2] => blue [3] => yellow )
fonte