PHP - Problemas clase stdClass al migrar de php 5 a php 7

 
Vista:
sin imagen de perfil
Val: 5
Ha aumentado su posición en 25 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problemas clase stdClass al migrar de php 5 a php 7

Publicado por Oquille (2 intervenciones) el 01/02/2021 11:19:24
Buenos días

He migrado mi página a PHP 7 y en principio todo funciona escepto la clase stdClass.
El código que aquí muestro en php 5 si que funciona.

Este es el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// objetos_tabla es un array multiple.
$objeto_envio = new stdClass;
 
if (is_array($objetos_tabla)){
    while (list($cl, $va) = each($objetos_tabla)) //recorro el array $objetos_tabla
    {
    $objeto_envio->$va[2] = new stdClass;  //creo el objeto $objeto_envio->$va[2] como un stdClass
    $objeto_envio->$va[2]->id = $va[0];  //almaceno en este objeto los valores del array
    $objeto_envio->$va[2]->nombre = $va[2];
    $objeto_envio->$va[2]->tipo = $va[3];
    $objeto_envio->$va[2]->nivel = $va[4];
    $objeto_envio->$va[2]->puntero = $va[5];
    $objeto_envio->$va[2]->html = $va[6];
    $objeto_envio->$va[2]->anchura_foto = $va[7];
    $objeto_envio->$va[2]->altura_foto = $va[8];
    $objeto_envio->$va[2]->video = stripslashes($va[9]);
    $objeto_envio->$va[2]->canvas = $va[10];
    $objeto_envio->$va[2]->enlace = $va[11];
    }
}
Y este es el error que me da:
PHP Notice: Array to string conversion in /Applications/...

No veo otros errores

Muchas gracias de antemando
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 Mauro
Val: 2.761
Oro
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Problemas clase stdClass al migrar de php 5 a php 7

Publicado por Mauro (1036 intervenciones) el 01/02/2021 21:46:32
¿En qué línea te da ese error? ¿Podrías poner el mensaje completo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 5
Ha aumentado su posición en 25 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problemas clase stdClass al migrar de php 5 a php 7

Publicado por Oquille (2 intervenciones) el 02/02/2021 12:10:55
Encontré la solución. Faltaban unas llaves. Al escribirlo de esta forma si que funciona:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while (list($cl, $va) = each($objetos_tabla))
{
    $objeto_envio->{$va[2]}= new stdClass;
    $objeto_envio->{$va[2]}->id = $va[0];
    $objeto_envio->{$va[2]}->nombre = $va[2];
    $objeto_envio->{$va[2]}->tipo = $va[3];
    $objeto_envio->{$va[2]}->nivel = $va[4];
    $objeto_envio->{$va[2]}->puntero = $va[5];
    $objeto_envio->{$va[2]}->html = $va[6];
    $objeto_envio->{$va[2]}->anchura_foto = $va[7];
    $objeto_envio->{$va[2]}->altura_foto = $va[8];
    $objeto_envio->{$va[2]}->video = stripslashes($va[9]);
    $objeto_envio->{$va[2]}->canvas = $va[10];
    $objeto_envio->{$va[2]}->enlace = $va[11];
}

El error salía en cada linea.
Resulta que al ponerlo entre llaves, en vez de $va[2] he puesto {$va[2]}, le estás diciendo a php 7 que es un valor no una variable.
Lo he encontrado en este post donde lo explican mejor:

https://3v4l.org/i9Q7p

Muchas gracias por todo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar