Risposte:
Spremuta di limone facile e peasy: http://www.php.net/manual/en/function.json-encode.php
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
C'è un post di andyrusterholz at g-m-a-i-l dot c-o-m
nella pagina sopra menzionata che può anche gestire array nidificati complessi (se è la tua cosa).
Usa il nativo di PHP json_encode
, in questo modo:
<?php
$arr = array(
array(
"region" => "valore",
"price" => "valore2"
),
array(
"region" => "valore",
"price" => "valore2"
),
array(
"region" => "valore",
"price" => "valore2"
)
);
echo json_encode($arr);
?>
Aggiornamento : per rispondere alla tua domanda nel commento. Lo fai in questo modo:
$named_array = array(
"nome_array" => array(
array(
"foo" => "bar"
),
array(
"foo" => "baz"
)
)
);
echo json_encode($named_array);
Semplice: basta creare un array PHP (nidificato) e chiamarlo json_encode
. Le matrici numeriche si traducono in liste JSON ( []
), le matrici associative e gli oggetti PHP si traducono in oggetti ( {}
). Esempio:
$a = array(
array('foo' => 'bar'),
array('foo' => 'baz'));
$json = json_encode($a);
Ti dà:
[{"foo":"bar"},{"foo":"baz"}]
Il modo migliore che dovresti fare ogni volta per creare json in php è prima convertire i valori in array ASSOCIATIVO.
Dopo di ciò basta semplicemente codificare usando json_encode($associativeArray)
. Penso che sia il modo migliore per creare json in php perché ogni volta che recuperiamo risultati da query sql in php il più delle volte otteniamo valori usando la fetch_assoc
funzione, che restituisce anche un array associativo.
$associativeArray = array();
$associativeArray ['FirstValue'] = 'FirstValue';
... eccetera.
Dopo di che.
json_encode($associativeArray);
anche per array puoi usare una breve annotazione:
$arr = [
[
"region" => "valore",
"price" => "valore2"
],
[
"region" => "valore",
"price" => "valore2"
],
[
"region" => "valore",
"price" => "valore2"
]
];
echo json_encode($arr);
Ecco come sono in grado di fare con l'aiuto della soluzione fornita da @tdammers di seguito. La seguente riga verrà inserita all'interno di ogni ciclo.
$array[] = array('power' => trim("Some value"), 'time' => "time here" );
E quindi codificare l'array con la funzione di codifica json
json_encode(array('newvalue'=> $array), 200)
Basta digitare questa riga per ottenere un array json,
echo json_encode($array);
Normalmente usi json_encode
per leggere i dati da un'app iOS o Android. quindi assicurati di non fare eco a nient'altro che all'accurata matrice json.
<?php
$username=urldecode($_POST['log_user']);
$user="select * from tbl_registration where member_id= '".$username."' ";
$rsuser = $obj->select($user);
if(count($rsuser)>0)
{
// (Status if 2 then its expire) (1= use) ( 0 = not use)
$cheknew="select name,ldate,offer_photo from tbl_offer where status=1 ";
$rscheknew = $obj->selectjson($cheknew);
if(count($rscheknew)>0)
{
$nik=json_encode($rscheknew);
echo "{\"status\" : \"200\" ,\"responce\" : \"201\", \"message\" : \"Get Record\",\"feed\":".str_replace("<p>","",$nik). "}";
}
else
{
$row2="No Record Found";
$nik1=json_encode($row2);
echo "{\"status\" : \"202\", \"responce\" : \"604\",\"message\" : \"No Record Found \",\"feed\":".str_replace("<p>","",$nik1). "}";
}
}
else
{
$row2="Invlid User";
$nik1=json_encode($row2);
echo "{\"status\" : \"404\", \"responce\" : \"602\",\"message\" : \"Invlid User \",\"feed\":".str_replace("<p>","",$nik1). "}";
}
?>
Ho creato una classe jsonOBJ grezza e semplice da utilizzare per il mio codice. PHP non include le funzioni json come JavaScript / Node. Devi iterare diversamente, ma può essere utile.
<?php
// define a JSON Object class
class jsonOBJ {
private $_arr;
private $_arrName;
function __construct($arrName){
$this->_arrName = $arrName;
$this->_arr[$this->_arrName] = array();
}
function toArray(){return $this->_arr;}
function toString(){return json_encode($this->_arr);}
function push($newObjectElement){
$this->_arr[$this->_arrName][] = $newObjectElement; // array[$key]=$val;
}
function add($key,$val){
$this->_arr[$this->_arrName][] = array($key=>$val);
}
}
// create an instance of the object
$jsonObj = new jsonOBJ("locations");
// add items using one of two methods
$jsonObj->push(json_decode("{\"location\":\"TestLoc1\"}",true)); // from a JSON String
$jsonObj->push(json_decode("{\"location\":\"TestLoc2\"}",true));
$jsonObj->add("location","TestLoc3"); // from key:val pairs
echo "<pre>" . print_r($jsonObj->toArray(),1) . "</pre>";
echo "<br />" . $jsonObj->toString();
?>
Uscita:
Array
(
[locations] => Array
(
[0] => Array
(
[location] => TestLoc1
)
[1] => Array
(
[location] => TestLoc2
)
[2] => Array
(
[location] => TestLoc3
)
)
)
{"locations":[{"location":"TestLoc1"},{"location":"TestLoc2"},{"location":"TestLoc3"}]}
Per iterare, converti in un oggetto normale:
$myObj = $jsonObj->toArray();
Poi:
foreach($myObj["locations"] as $locationObj){
echo $locationObj["location"] ."<br />";
}
Uscite:
TestLoc1
TestLoc2
TestLoc3
Accesso diretto:
$location = $myObj["locations"][0]["location"];
$location = $myObj["locations"][1]["location"];
Un esempio pratico:
// return a JSON Object (jsonOBJ) from the rows
function ParseRowsAsJSONObject($arrName, $rowRS){
$jsonArr = new jsonOBJ($arrName); // name of the json array
$rows = mysqli_num_rows($rowRS);
if($rows > 0){
while($rows > 0){
$rd = mysqli_fetch_assoc($rowRS);
$jsonArr->push($rd);
$rows--;
}
mysqli_free_result($rowRS);
}
return $jsonArr->toArray();
}