2016-05-11 15 views
-2

Ich versuche, eine PHP-Array in eine JSON-Zeichenfolge zu konvertieren:Wie bekomme ich PHP Array in JSON String konvertieren?

$result = mysqli_query($conn, $sql); 
if (mysqli_num_rows($result) > 0) { 
    // output data of each row 
    while($row = mysqli_fetch_assoc($result)) { 
      $userinfo[] = $row; 
    } 
    print_r($userinfo); 

} else { 
    echo "0 results"; 
} 

mysqli_close($conn); 

Dieses ein Array zurückgibt:

Array 
(
    [0] => Array 
     (
      [entity_id] => 24 
      [product_name] => Burger 
      [product_image_url] => /b/u/burger_large.jpg 
      [price] => 234.0000 
      [category_id] => 59 
     ) 

    [1] => Array 
     (
      [entity_id] => 25 
      [product_name] => Massage 
      [product_image_url] => /2/9/29660571-beauty-spa-woman-portrait-beautiful-girl-touching-her-face.jpg 
      [price] => 5000.0000 
      [category_id] => 63 
     ) 

    [2] => Array 
     (
      [entity_id] => 27 
      [product_name] => Chicken Biryani 
      [product_image_url] => /b/i/biryani.jpg 
      [price] => 500.0000 
      [category_id] => 59 
     ) 

    [3] => Array 
     (
      [entity_id] => 28 
      [product_name] => Panner Chilly 
      [product_image_url] => /p/a/panner.jpg 
      [price] => 456.0000 
      [category_id] => 59 
     ) 

    [4] => Array 
     (
      [entity_id] => 31 
      [product_name] => Pizza 
      [product_image_url] => /p/i/pizza_png7143_1.png 
      [price] => 125.0000 
      [category_id] => 59 
     ) 

) 

wenn ich ich eine JSON-String bekommen auf diese kodieren tun json mit "[" am Anfang ein Ende. Wie überwinden ich das i die json Zeichenfolge wie diese

{ 
    "entity_id": "31", 
    "product_name": "Pizza", 
    "product_image_url": "\/p\/i\/pizza_png7143_1.png", 
    "price": "125.0000", 
    "category_id": "59" 
} 

und nicht so aussehen wollen:

[{ 
    "entity_id": "31", 
    "product_name": "Pizza", 
    "product_image_url": "\/p\/i\/pizza_png7143_1.png", 
    "price": "125.0000", 
    "category_id": "59" 
}] 
+0

, wenn Sie das '' '[' '' und '' ']' '' zu entfernen, ist nicht '' 'json' '' mehr (kein Parser wird es entschlüsseln können) –

+0

Sie haben ein Array mit einem assoziativen Array darin. Wenn Sie ein einzelnes json-Objekt zurückgeben möchten, müssen Sie angeben, welche $ -Zeile. – Scopey

+0

Das Ausführen von 'json_encode' an diesem vollständigen Array führt nicht zur Rückgabe der oben angegebenen json-Ausgabe. Sie lassen hier also ein paar Informationen weg. –

Antwort

0

Wenn Sie nicht möchten, dass eckigen Klammern in diesem Fall unter Verwendung von trim nur diese Klammern entfernen:

0

Sie serialisieren ein Array, daher ist Ihr Ergebnis vollkommen in Ordnung, da json-Arrays innerhalb von [] dargestellt werden.

wenn Sie jedes Objekt als json isoliert dargestellt wollen, dies tun:

$result = mysqli_query($conn, $sql); 
if (mysqli_num_rows($result) > 0) { 
    // output data of each row 
    while($row = mysqli_fetch_assoc($result)) { 
      echo json_encode(row); 
    } 

} else { 
    echo "0 results"; 
} 

mysqli_close($conn);