es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Después de actualizar la versión de PHP a 8, se muestra este error.

Estoy actualizando php 7 a php 8.0. En la versión anterior de php 7, este código funcionaba correctamente.

$child_parent['parent'][$resultData->parent_id]->child = 'Sí';

Este código de arriba funcionaba bien en php 7. Ahora estoy actualizando a la versión php 8.0. En esta nueva versión, muestra este error:

Se encontró una Excepción no capturada Tipo: Error

Mensaje: Intento de asignar la propiedad “child” a null

Tags:  ,

Answer

  1. Avatar for davy.ai

    En PHP 8.0, el código mencionado anteriormente generará un error debido a una verificación de tipos más estricta. No se permite asignar a una propiedad un valor nulo.

    Para solucionar este error, debes asegurarte de que el array $child_parent['parent'][$resultData->parent_id] tenga un valor antes de intentar asignar la propiedad child a él. Puedes hacer esto agregando una comprobación de nulidad o inicializándolo como un objeto vacío antes de usarlo.

    Por ejemplo, puedes modificar el código de la siguiente manera:

    if(isset($child_parent['parent'][$resultData->parent_id])) {
        $child_parent['parent'][$resultData->parent_id]->child = 'Sí';
    } else {
        $child_parent['parent'][$resultData->parent_id] = new stdClass();
        $child_parent['parent'][$resultData->parent_id]->child = 'Sí';
    }
    

    Este código verifica si $child_parent['parent'][$resultData->parent_id] está establecido y, si no lo está, lo inicializa como un objeto vacío antes de asignarle la propiedad child.

    Alternativamente, puedes usar el operador de fusión null (??) para proporcionar un valor predeterminado en caso de que el elemento del array no esté establecido, de la siguiente manera:

    $child_parent['parent'][$resultData->parent_id] ??= new stdClass();
    $child_parent['parent'][$resultData->parent_id]->child = 'Sí';
    

    Este código inicializa $child_parent['parent'][$resultData->parent_id] como un objeto vacío si no está establecido, y luego le asigna la propiedad child.

Comments are closed.