Error fatal al usar foreach en el tercer array.
Estoy obteniendo un error al intentar usar foreach en el tercer array.
{
"prefix": "_country-",
"countries": [
{
"code": "al",
"name": "Albania",
"cities": {
"prefix": "_city-",
"options": [
{
"code": "durres"
},
{
"code": "tirana"
}
]
}
},
{
"code": "dz",
"name": "Algeria",
"cities": {
"prefix": "_city-",
"options": [
{
"code": "algiers"
},
{
"code": "oran"
}
]
}
}
]
}
Mi objetivo es obtener esos datos anteriores y espero que se repita hasta su último dato usando este código:
foreach($countryarr1['countries'] as $countkey1 => $countname1){ ?> <br><br> <?php
foreach($countname1['cities'] as $cntrykey2 => $cntrys){
foreach($cntrys['options'] as $optionskey1 => $optionsarr1){
var_dump($optionsarr1);
}
}
}
Devuelve este error:
Fatal error: Uncaught TypeError: Cannot access offset of type string on string in
C:\xampp\htdocs\homepage\countries.php:25 Stack trace: #0 {main} thrown in
C:\xampp\htdocs\homepage\countries.php on line 25
Aquí está la línea 25:
¿Me falta algo? Por cierto, estoy trabajando en un panel de control de proxy para un sitio web.
Aquí está la prueba de que cuando solo tenía 2 arrays no había problemas:
Ahora, cuando agrego otro foreach en el tercer array y así sucesivamente, aparece el error. Aquí lo tienes:
Y el error error
davy.ai
Según el mensaje de error, parece que el problema está en tratar de acceder a un desplazamiento de tipo cadena en una cadena. Mirando tu código, parece que el problema está en el segundo bucle foreach para
$cntrys
.En lugar de iterar a través de
$cntrys
en sí, debes acceder directamente a la clave'options'
de esta manera:De esta manera, estás accediendo directamente al arreglo
'options'
dentro del objetocities
, en lugar de intentar iterar a través del objeto mismo, lo cual está causando el error.Una vez que realices este cambio, el bucle foreach debería funcionar como se espera e iterar a través de todos los arreglos
'options'
dentro de cada objeto país/ciudad.