web-dev-qa-db-fra.com

Comment créer un tableau pour JSON en utilisant PHP?

Depuis le code PHP, je veux créer un tableau json:

[
  {"region":"valore","price":"valore2"},
  {"region":"valore","price":"valore2"},
  {"region":"valore","price":"valore2"}
]

Comment puis-je faire ceci?

117
Mimmo

Squeezy au citron facile: 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);
?>

Il y a un article par andyrusterholz at g-m-a-i-l dot c-o-m sur la page susmentionnée qui peut également gérer des tableaux imbriqués complexes (si c'est votre truc).

144
David Titarenco

Utilisez le code json_encode natif de PHP, comme ceci:

<?php
$arr = array(
    array(
        "region" => "valore",
        "price" => "valore2"
    ),
    array(
        "region" => "valore",
        "price" => "valore2"
    ),
    array(
        "region" => "valore",
        "price" => "valore2"
    )
);

echo json_encode($arr);
?>

Update: Pour répondre à votre question dans le commentaire. Vous le faites comme ça:

$named_array = array(
    "nome_array" => array(
        array(
            "foo" => "bar"
        ),
        array(
            "foo" => "baz"
        )
    )
);
echo json_encode($named_array);
101
Shef

Simple: créez simplement un tableau PHP (imbriqué) et appelez json_encode dessus. Les tableaux numériques se traduisent en listes JSON ([]), les tableaux associatifs et les objets PHP se traduisant en objets ({}). Exemple:

$a = array(
        array('foo' => 'bar'),
        array('foo' => 'baz'));
$json = json_encode($a);

Vous donne:

[{"foo":"bar"},{"foo":"baz"}]
37
tdammers

La meilleure façon d’aller à chaque fois pour créer JSON en php est de convertir d’abord les valeurs du tableau ASSOCIATIVE.

Après cela, il vous suffit d’encoder à l’aide de json_encode($associativeArray). Je pense que c'est la meilleure façon de créer JSON en php car chaque fois que nous récupérons une requête SQL sous forme de résultat dans php, la plupart du temps, nous obtenons des valeurs en utilisant la fonction fetch_assoc, qui renvoie également un tableau associatif.

$associativeArray = array();
$associativeArray ['FirstValue'] = 'FirstValue';

...etc.

Après ça.

json_encode($associativeArray);
13
Parveen Verma

aussi pour array vous pouvez utiliser une annotattion courte:

$arr = [
    [
        "region" => "valore",
        "price" => "valore2"
    ],
    [
        "region" => "valore",
        "price" => "valore2"
    ],
    [
        "region" => "valore",
        "price" => "valore2"
    ]
];

echo json_encode($arr);
3
dwaskowski
$json_data = '{ "Languages:" : [ "English", "Spanish" ] }';
$lang_data = json_decode($json_data);
var_dump($lang_data);
1
Matthew

C'est ce que je suis capable de faire avec l'aide de la solution donnée par @tdammers ci-dessous. La ligne suivante sera placée à l’intérieur de la boucle foreach.

$array[] = array('power' => trim("Some value"), 'time' => "time here" );

Et puis encoder le tableau avec la fonction d'encodage JSON

json_encode(array('newvalue'=> $array), 200)
0
iZeeshan
<?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). "}";
    }

 ?>
0
Ajay Prajapati