Respuestas:
Exprimidor fácil de limón: 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);
?>
Hay una publicación andyrusterholz at g-m-a-i-l dot c-o-m
en la página mencionada que también puede manejar matrices anidadas complejas (si eso es lo suyo).
Use el nativo de PHP json_encode
, así:
<?php
$arr = array(
array(
"region" => "valore",
"price" => "valore2"
),
array(
"region" => "valore",
"price" => "valore2"
),
array(
"region" => "valore",
"price" => "valore2"
)
);
echo json_encode($arr);
?>
Actualización : para responder a su pregunta en el comentario. Lo haces así:
$named_array = array(
"nome_array" => array(
array(
"foo" => "bar"
),
array(
"foo" => "baz"
)
)
);
echo json_encode($named_array);
Simple: simplemente cree una matriz PHP (anidada) e instálela json_encode
. Las matrices numéricas se traducen en listas JSON ( []
), las matrices asociativas y los objetos PHP se traducen en objetos ( {}
). Ejemplo:
$a = array(
array('foo' => 'bar'),
array('foo' => 'baz'));
$json = json_encode($a);
Te dio:
[{"foo":"bar"},{"foo":"baz"}]
La mejor manera de ir cada vez para crear json en php es convertir primero los valores en una matriz ASSOCIATIVE.
Después de eso simplemente codifica usando json_encode($associativeArray)
. Creo que es la mejor manera de crear json en php porque cada vez que estamos obteniendo resultados de la consulta sql en php, la mayoría de las veces tenemos valores usando la fetch_assoc
función, que también devuelve una matriz asociativa.
$associativeArray = array();
$associativeArray ['FirstValue'] = 'FirstValue';
... etc.
Después de esto.
json_encode($associativeArray);
también para array puedes usar anotaciones cortas:
$arr = [
[
"region" => "valore",
"price" => "valore2"
],
[
"region" => "valore",
"price" => "valore2"
],
[
"region" => "valore",
"price" => "valore2"
]
];
echo json_encode($arr);
Así es como puedo hacerlo con la ayuda de la solución dada por @tdammers a continuación. La siguiente línea se colocará dentro del bucle foreach.
$array[] = array('power' => trim("Some value"), 'time' => "time here" );
Y luego codifique la matriz con la función de codificación json
json_encode(array('newvalue'=> $array), 200)
Simplemente escribiendo esta sola línea le daría una matriz json,
echo json_encode($array);
Normalmente se usa json_encode
para leer datos de una aplicación ios o android. así que asegúrese de no hacer eco de otra cosa que no sea la matriz json precisa.
<?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). "}";
}
?>
Creé una clase jsonOBJ simple y cruda para usar para mi código. PHP no incluye funciones json como JavaScript / Node do. Debe iterar de manera diferente, pero puede ser útil.
<?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();
?>
Saldrá:
Array
(
[locations] => Array
(
[0] => Array
(
[location] => TestLoc1
)
[1] => Array
(
[location] => TestLoc2
)
[2] => Array
(
[location] => TestLoc3
)
)
)
{"locations":[{"location":"TestLoc1"},{"location":"TestLoc2"},{"location":"TestLoc3"}]}
Para iterar, convertir a un objeto normal:
$myObj = $jsonObj->toArray();
Luego:
foreach($myObj["locations"] as $locationObj){
echo $locationObj["location"] ."<br />";
}
Salidas:
TestLoc1
TestLoc2
TestLoc3
Acceso directo:
$location = $myObj["locations"][0]["location"];
$location = $myObj["locations"][1]["location"];
Un ejemplo práctico:
// 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();
}