2011-01-30 10 views
10

tengo una matriz que imprime como esto¿Cómo puedo `json_encode()` claves de la matriz de PHP?

Array ([0] => 1691864 [1] => 7944458 [2] => 9274078 [3] => 1062072 [4] => 8625335 [5] => 8255371 [6] => 5476104 [7] => 6145446 [8] => 7525604 [9] => 5947143) 

Si json_encode($thearray) me sale algo como esto

[1691864,7944458,9274078,1062072,8625335,8255371,5476104,6145446,7525604,5947143] 

Por qué el nombre no está codificado (por ejemplo 0, 1, 2, 3, etc.)? y ¿cómo debería hacer para que aparezca en el código json? el código completo está por debajo

$ie = 0; 
    while($ie 10) 
    { 
    $genid = rand(1000000,9999999); 
    $temp[$ie] = $genid ; 
    $ie++; 
    } 
    print_r($temp); 

    $temp_json = json_encode($temp); 
    print_r($temp_json); 

Respuesta

31

Puede forzar que json_encode utiliza un objeto a pesar de que estás pasando un array con las teclas numéricas estableciendo la opciónJSON_FORCE_OBJECT:

json_encode($thearray, JSON_FORCE_OBJECT) 

Entonces, el valor devuelto será un objeto JSON con las teclas numéricas:

{"0":1691864,"1":7944458,"2":9274078,"3":1062072,"4":8625335,"5":8255371,"6":5476104,"7":6145446,"8":7525604,"9":5947143} 

Pero solo debe hacer esto si realmente se necesita un objeto.

+1

¿No sabía acerca de 'JSON_FORCE_OBJECT', cualquier caída usando este parámetro? Votado ~ Ty –

0

Porque esos son sólo los índices de la matriz. Si desea agregar algún tipo de nombre a cada elemento, entonces necesita usar una matriz asociativa.

Al decodificar que JSON gama pesar de que va a volver a 0, 1, 2, 3, etc.

0

Esto se define el comportamiento. La matriz que muestra es una matriz no asociativa, normalmente indexada. Sus índices son implícitamente numéricos.

Si decodificar la matriz en PHP o JavaScript, usted será capaz de acceder a los elementos utilizando el índice:

$temp_array = json_decode($temp_json); 

echo $temp_array[2]; // 9274078 
5

Use este lugar:

json_encode((object)$temp) 

Esto convierte la matriz en objetos , que cuando está codificado en JSON, mostrará las teclas.

Si está almacenando una secuencia de datos, no un mapeo de un número a otro, realmente debería usar una matriz.

Cuestiones relacionadas