Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

520
Vistas
Después de actualizar la versión php a 8, aparece este error

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

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

Este código anterior funciona bien en php 7. Ahora estoy actualizando la versión 8.0 de php. En esta nueva versión da este error.

Se encontró una excepción no detectada Tipo: Error

Mensaje: Intento de asignar propiedad "hijo" en nulo

código con detalles: -

 $currentFile = $_SERVER["REQUEST_URI"]; $parts = Explode('/', $currentFile); $currnet_menu = $parts[count($parts) - 1]; $child_parent = array(); $parent = array(); $new_array = array(); $increment = 0; foreach ($menu_data as $key => $resultData) { //echo"<pre>";print_r($resultData); //stdClass Object //output of $resultData //( // [key_id] => 67 // [key_update_date] => // [key_update_by] => // [GroupModuleID] => 67 // [ModuleID] => 38 // [GroupId] => 1 // [ModuleName] => home // [display_name] => Home Page // [super_use] => 0 // [Mid] => 38 // [description] => // [parent_id] => 0 // [display_in_menu] => 1 // [module_icon] => home // [groupName] => Super Admin // [Uid] => 119 // [icon_html] => // [total_count] => 0 // [has_more_records] => 0 ) if ($resultData->display_in_menu == 1) { array_push($parent, $resultData->parent_id); if (in_array($resultData->parent_id, $parent)) { if ($resultData->parent_id == 0) { $child_parent['parent'][$resultData->ModuleID] = $resultData; $child_parent['parent'][$resultData->ModuleID]->child = 'No'; } else { $child_parent['child'][$resultData->parent_id][$increment] = $resultData; $child_parent['parent'][$resultData->parent_id]->child = 'Yes'; $parts1 = Explode('/', $resultData->ModuleName); $currnet_menu_check = $parts1[count($parts1) - 1]; if ($currnet_menu_check == $currnet_menu) { $new_array[$resultData->parent_id]->open_child = 'Yes'; } } $increment++; } } }

Gracias por adelantado.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No puede simplemente asignar propiedades en no objetos. Esto también falla en PHP 7, no solo en 8.

Por ejemplo:

 $arr = []; $arr['parent'][1]->child = 'yes';

Estoy tratando de asignar una propiedad child a un objeto que no sea. El $arr['parent'][1] está vacío, no es un objeto.
El resultado en PHP 7.0 - 7.4:

Advertencia: creación de un objeto predeterminado a partir de un valor vacío

El resultado en PHP 8.0+:

Error: intento de asignar la propiedad "hijo" en nulo

La diferencia entre PHP 7.0+ y PHP 8.0+ es...
En PHP7.0+, el nivel de Advertencia aún puede continuar el proceso
Mientras que en PHP 8.0+ esto se convierte en el nivel de Error y se detendrá el proceso.
Si muestra todos los errores o registra todos los niveles de error, verá que esto no solo sucede en PHP 8.0+.

Para que funcione (para asignar propiedades), su variable debe ser un objeto. En mi ejemplo, $arr['parent'][1] debe ser un objeto.

 $arr = []; $arr['parent'][1] = new \stdClass(); $arr['parent'][1]->child = 'yes';

En su caso, tanto $child_parent['parent'][$resultData->ModuleID] como $child_parent['parent'][$resultData->parent_id] debían declararse como un objeto antes de asignar la propiedad.

 if ($resultData->parent_id == 0) { $child_parent['parent'][$resultData->ModuleID] = $resultData;// I think $resultData is already an object. $child_parent['parent'][$resultData->ModuleID]->child = 'No'; } else { $child_parent['child'][$resultData->parent_id][$increment] = $resultData; $child_parent['parent'][$resultData->parent_id] = new \stdClass();// added $child_parent['parent'][$resultData->parent_id]->child = 'Yes'; // your code }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda