Empujar elemento a matriz asociativa en PHP

2 minutos de lectura

avatar de usuario
ryudice

He estado tratando de empujar 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, se agrega un número. ¿Hay otra manera de hacerlo?

  • No es posible insertar una matriz en otra matriz. Probé todas estas opciones y la combinación solo agregó la matriz. Resolví mi problema con una Clase.

    – Alex Benincasa Santos

    5 de junio de 2017 a las 23:29

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

  • La solución más simple es a menudo la mejor solución

    – jpcaparas

    20 oct 2021 a las 0:02

avatar de usuario
Murtaza Khursheed Hussain

En vez de array_push()usar 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 final_array. Y los resultados de la matriz resultante serán:

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

Por favor revisa esto Enlacepara estar al tanto de posibles problemas.

  • en realidad debería ser $existing_array = array(‘a’=>’b’, ‘b’=>’c’); $nueva_matriz = matriz(‘d’=>’e’, ‘f’=>’g’); $resultado = array_merge($existing_array, $new_array);

    – Calvin Chan

    29 de agosto de 2013 a las 2:21

  • bueno, es de sentido común recopilar resultados. Solo estaba dando la idea. Saludos

    – Murtaza Khursheed Hussain

    29 de agosto de 2013 a las 7:44

avatar de usuario
Ajmal Salim

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

La solución de WebbieDave funcionará. Si no desea sobrescribir nada que ya esté en ‘nombre’, también puede hacer algo como esto:


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

Si $new_input puede contener más que solo un elemento de ‘nombre’ que puede querer usar 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);

avatar de usuario
Feras Al Sous

yo suelo php5.6

código:

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

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

print_r($person) 

producción

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

avatar de usuario
bool.dev

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!

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad