J'ai un problème avec ce script ...

Mon script a renvoyé ceci:

{
"categories": {
    "cid": "1",
    "name": "Pierwsza pomoc"
}
}{
"categories": {
    "cid": "2",
    "name": "Poradniki"
}
}{
"categories": {
    "cid": "3",
    "name": "Klany"
}
}{
"categories": {
    "cid": "4",
    "name": "Eventy, imprezy"
}
}{
"categories": {
    "cid": "5",
    "name": "Rozm\u00f3wki"
}
}{
"categories": {
    "cid": "6",
    "name": "Quest, solucje"
}
}{
"categories": {
    "cid": "7",
    "name": "Off topic"
}
}

Mais je veux ça

[
    'categories': {
          'cid': 1,
          'name': 'test',
          'cid': 2,
          'name': 'asdsad',
          'cid': 3,
          'name': 'asdasd'
    }
]

Le code utilisé pour créer les données est

if($query->rowCount() > 0){ 
    foreach($query as $row){ 
        $Forum->writeJSON(array('categories' => array( 'cid' => $row['id'], 'name' => $row['name'] ))); 
    } 
}



class Forum { 
    public function writeJSON($array){ 
        echo json_encode($array, JSON_PRETTY_PRINT); 
    } 
} 

$Forum = new Forum;
php
-1
Matthew John Miernik 2 janv. 2016 à 13:44

2 réponses

Meilleure réponse

Eh bien, cette structure n'est pas possible. Vous ne pouvez pas stocker deux ou plusieurs éléments avec exactement la même clé dans le même objet. Cependant, peut-être voulez-vous simplement cette sortie:

[ 'categories' : { 1: {category_id:1, name:'test'}, 2: {category_id:2, name:'test'} } ]

C'est simple, par exemple, vous pouvez utiliser quelque chose comme ceci pour former ce tableau:

<?php
//fetch data into categories variable
$output = array();
$output['categories'] = array();
foreach ($category as $category){
  $output['categories'][] = array('category_id' => $category['id'], 'name' => $category['name']);
}
$output = json_encode($output);
?>

PS: Veuillez utiliser les noms de variables corrects dans votre code, ceci n'est qu'un exemple utilisant des noms de variables fictifs

0
LIMEXS 2 janv. 2016 à 11:23

Vous devez modifier votre code de boucle foreach

if($query->rowCount() > 0){ 
 foreach($query as $row){
    $cat_array[$row['id']] = array('cid'=>$row['id'],'name'=>$row['name']);
 }
  $json_array[] = array('categories'=>$cat_array);
  $Forum->writeJSON($json_array);
}
0
hardik solanki 2 janv. 2016 à 11:23