2016-12-22 4 views
1

Ich bin neu in PHP und versuche, 2 Arrays zusammen in ein JSON-Objekt zu kodieren.json_encode mehrere Arrays in ein JSON-Objekt in PHP?

Derzeit ist dies die JSON Ausgabe:

{ 
    "image_link": "some url", 
    "zoomin_level": "8", 
    "zoomout_level": "18.5", 
    "position_lat": "32.913105", 
    "position_long": "-117.140363", 
} 

Ich mag es, folgendes zu erreichen:

{ 
    "image_link": "some url", 
    "zoomin_level": "2", 
    "zoomout_level": "15", 
    "position_lat": "32.9212", 
    "position_long": "-117.124", 

    "locations": { 
     "1": { 
      "image_link": "some url", 
      "name": "Name", 
      "lat": 32.222, 
      "marker_long": -112.222 
     }, 
     "2": { 
      "image_link": "some url", 
      "name": "Name", 
      "lat": 32.222, 
      "marker_long": -112.222 
     } 
    } 
} 

Dies ist ähnlich wie die Frage hier gestellt: PHP json_encode multiple arrays into one object

jedoch Mine ist etwas anders, weil ich gerne das 2. Array als Teil eines Schlüssel-Wert-Teils innerhalb des 1. Arrays hinzufügen möchte.

Hier ist meine PHP-Code:

$sql = "select * from first_table"; 
$result = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection)); 

$rowCount = $result->num_rows; 
$index = 1 ; 
$newArray = []; 
while($row =mysqli_fetch_assoc($result)) 
{ 
    $sqlnew = "select * from second_table"; 
    $resultnew = mysqli_query($connection, $sqlnew) or die("Error in Selecting " . mysqli_error($connection)); 

    //create an array 
    $jsonData = array(); 
    $rowCountnew = $resultnew->num_rows; 
    $indexnew = 1; 

    if ($rowCountnew >0) 
    { 
     while($rownew =mysqli_fetch_assoc($resultnew)) 
     { 
      $locations[$indexnew] = array("image_link" => $rownew['image_link'], "name" => $rownew['name'], "position_lat" => doubleval($rownew['position_lat']), "position_long" => doubleval($rownew['position_long'])); 

      ++$indexnew; 

     } 
    } 
    $newArray[$row['map_type']] = $row['map_value']; 
} 

echo json_encode($newArray); 

nicht die richtige Syntax zu wissen, habe ich versucht, das Folgende auszuführen, die in Müll ergab: echo json_encode($newArray, "locations" =>$locations);

Antwort

2

Try:

$newArray['locations'] = $locations; 
echo json_encode ($newArray); 
+0

PERFECT .. .will Antwort akzeptieren, wenn es erlaubt :) – Pangu

+0

eine letzte Frage, gibt es eine Möglichkeit, die automatisch generierten Werte '1',' 2', für jedes Element, um eine eindeutige Zeichenfolge statt, sagen 'locat ion1', 'location2'? – Pangu

+1

Sie verwenden $ indexnew, was ein Zähler ist und warum Sie 1, 2 usw. erhalten. Verwenden Sie statt $ indexnew, was immer Sie wollen. z.B. $ locations ['location_1'] = array ("image_link" => ....) – Phil