2011-01-19 17 views
39

Tengo una matriz JSON:php: bucle a través matriz JSON

[ 
    { 
     "var1": "9", 
     "var2": "16", 
     "var3": "16" 
    }, 
    { 
     "var1": "8", 
     "var2": "15", 
     "var3": "15" 
    } 
] 

¿Cómo puedo bucle a través de esta matriz utilizando php?

+0

Use [json_decode] (http://php.net/manual/en/function.json-decode.php) para convertirlo en una matriz de PHP. – Phil

Respuesta

46

Establecer el segundo parámetro de la función de cierto si usted requiere una matriz asociativa

Algunas versiones php requiere un segundo parámetro de verdadero si necesita una matriz asociativa

$json = '[{"var1":"9","var2":"16","var3":"16"},{"var1":"8","var2":"15","var3":"15"}]'; 
$array = json_decode($json, true); 
+1

No hay una referencia específica de versión para el segundo argumento 'assoc' – Phil

9

Utilice json_decode para convertir la cadena JSON en una matriz PHP, luego use las funciones normales de matriz PHP en ella.

$json = '[{"var1":"9","var2":"16","var3":"16"},{"var1":"8","var2":"15","var3":"15"}]'; 
$data = json_decode($json); 

var_dump($data[0]['var1']); // outputs '9' 
+0

Esto no recorre la matriz tho. ¿Simplemente recupera el primer valor? –

47

decodificar la cadena JSON usando json_decode() y luego bucle a través de él mediante un bucle normal:

$arr = json_decode('[{"var1":"9","var2":"16","var3":"16"},{"var1":"8","var2":"15","var3":"15"}]'); 

foreach($arr as $item) { //foreach element in $arr 
    $uses = $item['var1']; //etc 
} 
+0

+1 para esto. es exactamente lo que estaba tratando de hacer, sin embargo, la falta de verdadero para la matriz asociativa me estaba dando un error. – superUntitled

25

En primer lugar hay que decodificar el JSON:

$array = json_decode($the_json_code); 

A continuación, después de que el JSON decodificado que tiene que hacer el foreach

foreach ($array as $key => $jsons) { // This will search in the 2 jsons 
    foreach($jsons as $key => $value) { 
     echo $value; // This will show jsut the value f each key like "var1" will print 9 
         // And then goes print 16,16,8 ... 
    } 
} 

Si quieres algo específico sólo pide una clave de esta manera. Pon esto entre el último foreach.

if($key == 'var1'){ 
echo $value; 
} 
Cuestiones relacionadas