Recibo una advertencia sobre una decodificación json foreach dentro de un foreach (aunque el código funciona, lo cual es extraño) la advertencia es: Advertencia: Argumento no válido proporcionado para foreach() se refiere a esta línea: foreach ($valor como $val ) {
Aquí está la respuesta JSON:
Array ( [ACTION] => avail.datacenters [DATA] => Array ( [0] => Array ( [LOCATION] => Dallas, TX, USA [DATACENTERID] => 2 [ABBR] => dallas ) [1] => Array ( [LOCATION] => Fremont, CA, USA [DATACENTERID] => 3 [ABBR] => fremont ) [2] => Array ( [LOCATION] => Atlanta, GA, USA [DATACENTERID] => 4 [ABBR] => atlanta ) [3] => Array ( [LOCATION] => Newark, NJ, USA [DATACENTERID] => 6 [ABBR] => newark ) [4] => Array ( [LOCATION] => London, England, UK [DATACENTERID] => 7 [ABBR] => london ) [5] => Array ( [LOCATION] => Tokyo, JP [DATACENTERID] => 8 [ABBR] => tokyo ) [6] => Array ( [LOCATION] => Singapore, SG [DATACENTERID] => 9 [ABBR] => singapore ) [7] => Array ( [LOCATION] => Frankfurt, DE [DATACENTERID] => 10 [ABBR] => frankfurt ) [8] => Array ( [LOCATION] => Tokyo 2, JP [DATACENTERID] => 11 [ABBR] => shinagawa1 ) ) [ERRORARRAY] => Array ( ) )
Mi código foreach:
$randDCID = array(); foreach ($linodeRegions as $value) { foreach ($value as $val) { echo $val['DATACENTERID'] . "<br />"; $randDCID[] = $val['DATACENTERID']; } }
¿Alguien puede ver el problema en la advertencia (aunque está generando los resultados deseados).
El error probablemente provenga del índice ACTION
y el valor correspondiente (que es una cadena) de la matriz. Asumiendo el hecho de que $linodeRegions
en su matriz original, no hay necesidad de crear bucles anidados en este caso, simplemente use un bucle foreach
como este:
$randDCID = array(); foreach ($linodeRegions['DATA'] as $value) { echo $value['DATACENTERID'] . "<br />"; $randDCID[] = $value['DATACENTERID']; }