He intentado enviar un elemento a una matriz asociativa como esta:
$new_input['name'] = array(
'type' => 'text',
'label' => 'First name',
'show' => true,
'required' => true
);
array_push($options['inputs'], $new_input);
Sin embargo, en lugar de 'nombre' como clave, agrega un número. ¿Existe otra forma de hacerlo?
Respuestas:
$options['inputs']['name'] = $new_input['name'];
fuente
En lugar de array_push () , usa array_merge ()
Fusionará dos matrices y combinará sus elementos en una sola matriz.
Código de ejemplo -
$existing_array = array('a'=>'b', 'b'=>'c'); $new_array = array('d'=>'e', 'f'=>'g'); $final_array=array_merge($existing_array, $new_array);
Devuelve la matriz resultante en la matriz_final. Y los resultados de la matriz resultante serán:
array('a'=>'b', 'b'=>'c','d'=>'e', 'f'=>'g')
Revise este enlace para estar al tanto de posibles problemas.
fuente
Esta es una función genial
function array_push_assoc($array, $key, $value){ $array[$key] = $value; return $array; }
Solo usa
$myarray = array_push_assoc($myarray, 'h', 'hello');
Créditos y explicación
fuente
La solución de WebbieDave funcionará. Si no desea sobrescribir nada que pueda estar ya en 'nombre', también puede hacer algo como esto:
$options['inputs']['name'][] = $new_input['name'];
fuente
Si
$new_input
puede contener más que un elemento de 'nombre' que puede 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);
fuente
La respuesta de Curtis estuvo muy cerca de lo que necesitaba, pero la cambié un poco.
Donde usó:
$options['inputs']['name'][] = $new_input['name'];
Solía:
$options[]['inputs']['name'] = $new_input['name'];
Aquí está mi código real usando una consulta de una base de datos:
while($row=mysql_fetch_array($result)){ $dtlg_array[]['dt'] = $row['dt']; $dtlg_array[]['lat'] = $row['lat']; $dtlg_array[]['lng'] = $row['lng']; }
¡Gracias!
fuente
yo suelo
php5.6
codigo :
$person = ["name"=>"mohammed", "age"=>30]; $person['addr'] = "Sudan"; print_r($person)
salida
Array( ["name"=>"mohammed", "age"=>30, "addr"=>"Sudan"] )
fuente
Simplemente cambie algunos fragmentos (use la función array_merge): -
$options['inputs']=array_merge($options['inputs'], $new_input);
fuente
$new_input = array('type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true); $options['inputs']['name'] = $new_input;
fuente
Hay una mejor manera de hacer esto:
Si la matriz $ arr_options contiene la matriz existente.
$arr_new_input['name'] = [ 'type' => 'text', 'label' => 'First name', 'show' => true, 'required' => true ]; $arr_options += $arr_new_input;
Advertencia: $ arr_options debe existir. si $ arr_options ya tiene un ['nombre'], se sobrescribirá.
Espero que esto ayude.
fuente
Puedes probar.
$options['inputs'] = $options['inputs'] + $new_input;
fuente
Puede usar array_merge ($ array1, $ array2) para fusionar la matriz asociativa. Ejemplo:
$a1=array("red","green"); $a2=array("blue","yellow"); print_r(array_merge($a1,$a2));
Salida:
Array ( [0] => red [1] => green [2] => blue [3] => yellow )
fuente