PHP - Añadir registro al final de Array

 
Vista:
sin imagen de perfil

Añadir registro al final de Array

Publicado por Sergio (1 intervención) el 22/02/2022 17:42:06
Buenas tardes compañeros,
Necesito vuestra ayuda porque estoy totalmente atascado.

Veréis, estoy programando un plugin de Wordpress, en el que necesito añadir a un array almacenado en la configuración con update_option, un registro nuevo recibido por POST desde un formulario.

Por mas vueltas que le doy no consigo saber donde esta el problema, no me deja adjuntarlo directamente tras leer el valor actual por un error "Fatal error: [] operator not supported for strings", y he tratado de regenerar nuevamente el array, pero no se porque me lo mete en un subnivel ...

Debería de crear:
array('16' => array('cantidad' => "3",'tipo' => "sesion"),'15' => array('cantidad' => "8",'tipo' => "subscripcion"));

y me esta creando:
array(2) { [0]=> array(2) { ["cantidad"]=> string(1) "8" ["tipo"]=> string(12) "subscripcion" } [1]=> array(1) { [14]=> array(2) { ["cantidad"]=> string(1) "7" ["tipo"]=> string(8) "sesiones" } } }

El código que tengo en estos momentos, y que no paro de modificar y darle vuelta es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
settings_fields ('virtuagym_settings_group');
    do_settings_sections ('virtuagym_settings_group');
 
 
    if( isset( $_POST['submit'])) {
        $productos_mapeados=get_option('arrayproductos');
        $nuevoarray=[];
        foreach($productos_mapeados as $key => $valor){
            $nuevoarray= array(
                $key => array(
                    'cantidad' => $valor['cantidad'],
                    'tipo' => $valor['tipo']
                ));
        }
        $nuevoarray[]=array($_POST['id'] => array('cantidad' => $_POST['cantidad'],'tipo' => $_POST['tipo']));
 
        var_dump($nuevoarray);
        update_option('arrayproductos',$nuevoarray);
    }?>

Muchas gracias por vuestra ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro
Val: 1.634
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Añadir registro al final de Array

Publicado por Alejandro (839 intervenciones) el 22/02/2022 21:01:49
  • Alejandro se encuentra ahora conectado en el
  • chat de PHP
Dentro de foreach estas sobrescribiendo $nuevoarray por lo que solo quedara el ultimo registro de $productos_mapeados y después agregara al final el de la linea 15.

a $productos_mapeados puedes agregar al final del array con [] o push_array();
1
2
$productos_mapeados[]=array($_POST['id'] => array('cantidad' => $_POST['cantidad'],'tipo' => $_POST['tipo']));
array_push($productos_mapeados, array($_POST['id'] => array('cantidad' => $_POST['cantidad'],'tipo' => $_POST['tipo'])));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar