Cómo acceder elemento de la matriz de valores con el uso de la matriz de índice?

<?
$json = '{
    "dynamic":{
       "pageCount":"12",
       "tableCount":"1"
    }
}';

$arr = json_decode($json, true);

echo $arr['dynamic']['pageCount']; //working
echo $arr[0]['pageCount']; //not working
?>

Yo no sé lo que hay en ‘dinámica’, así que quiero acceder pageCount valores de forma dinámica?

  • foreach va a iterar a través de la matriz, proporcionando las claves y valores. reset devuelve el primer valor, independientemente de la clave (también se puede obtener la clave con la key). array_values reemplazará las teclas con auto-incremento de los números enteros. ¿Cuál es exactamente tu caso de uso?
InformationsquelleAutor Shiv | 2012-09-05

2 Comentarios

  1. 11

    array_values es la función que está buscando

    Ejemplos:

    <?php
    $json = '{
        "dynamic":{
           "pageCount":"12",
           "tableCount":"1"
        }
    }';
    
    $arr = json_decode($json, true);
    echo $arr['dynamic']['pageCount']; //working
    
    $arr = array_values($arr);
    echo $arr[0]['pageCount']; //NOW working
    
    ?>
  2. 1
    $arr = json_decode($json, true);
    foreach ($arr as $key => $value) {
        if (isset($value['pageCount'])) {
            //do something with the page count
        }
    }

    Si la estructura es siempre una sola anidada JS objeto:

    $obj = current($arr);
    echo $obj['pageCount'];
    • OK, tengo trabajo. Pero estaba pensando si no hay acceso directo sin bucles
    • Puede ser tan directa que duele: extract(reset($arr));. Como dije en el comentario – ¿cuál es el caso de uso?
    • He actualizado mi respuesta con un no-bucle solución que funcionará sólo si la estructura es siempre una sola anidada JS objeto como en el ejemplo.

Dejar respuesta

Please enter your comment!
Please enter your name here