2014-05-09 5 views
-3

J'ai eu la sortie de tableau JSON, mais il contient des valeurs en double Ci-dessous vous pouvez voir le json_array double indice 0e ... Je ne sais pas, quel est le problème, suggestion de besoin et Pourquoi...? Merci à l'avancePHP obtenir double JSON Tableau

Ma sortie:

[{"gallery_url":"fdkgvdjvb.img"}][{"gallery_url":"fdkgvdjvb.img"},{"gallery_url":"gdfgh.mp4"}] 

sortie requis:

[{"gallery_url":"fdkgvdjvb.img"},{"gallery_url":"gdfgh.mp4"}] 

Mon code:

<?php 
$json = array(); 
$gallery=$_GET['gallery']; 



     $con=mysqli_connect("localhost","allluser","password4"); 
    if($con) 
    { 
    //echo "connected"; 
    } 
    $db_select = mysqli_select_db($con,'jumeirah_db'); 
    if($db_select) 
    { 
    //echo "db selected"; 
    } 
    $user_type=$_GET['user_type']; 
    $image=mysqli_query($con,"Select gallery_url from ju_gallery where user_type='$user_type'"); 
if ($image) { 


while($r = mysqli_fetch_assoc($image)) { 
    $json[] = $r; 
    print json_encode($json); 
} 
} 
mysqli_close($con); 

?> 
+0

Sortez l'instruction 'print json_encode ($ json);' de l'intérieur de votre boucle while et mettez-la à l'extérieur. –

+0

Oui ça marche ,,, Merci l'homme ,,, Mais pourquoi cela arrive. – arun

+0

C'est simple, @arun. Vous imprimez la valeur codée JSON pour chaque ligne. Vous avez seulement besoin de la représentation JSON du ** tableau entier **. –

Répondre

0

Sortez l'instruction json_encode.

<?php 
$json = array(); 
$gallery=$_GET['gallery']; 

     $con=mysqli_connect("localhost","allluser","password4"); 
    if($con) 
    { 
    //echo "connected"; 
    } 
    $db_select = mysqli_select_db($con,'jumeirah_db'); 
    if($db_select) 
    { 
    //echo "db selected"; 
    } 
    $user_type=$_GET['user_type']; 
    $image=mysqli_query($con,"Select gallery_url from ju_gallery where user_type='$user_type'"); 
if ($image) { 


while($r = mysqli_fetch_assoc($image)) { 
    $json[] = $r; 
} 
print json_encode($json); 
} 
mysqli_close($con); 

?> 
1

essayer

while($r = mysqli_fetch_assoc($image)) { 
    $json[] = $r; 
} 

print json_encode($json); 

ce devrait imprimer votre résultat attendu.

Votre base de données renvoie deux résultats qui provoqueront exactement deux itérations dans votre boucle while.

La première itération ajoute $ r à votre tableau $ json. maintenant le tableau a un élément et vous l'imprimez. La deuxième itération ajoute un autre $ r à votre tableau $ json qui a maintenant deux éléments. la seconde print génère votre résultat attendu. La "duplication" est causée par l'impression à l'intérieur de votre boucle while.