Convert Array to json using foreach loop

Gha*_*iya 0 php arrays api json multidimensional-array

I am Trying to convert array to json but not getting exact result I am looking for.

Here,

<?php
      $result=array();
      $result[status]=1;
      $data=array(
                array("ucode" => "123","name" => "abc","lname" => "xyz"),
                array("ucode" => "431","name" => "cdb","lname" => "zsa")
              );
      foreach($data as $res){ 
          $data=array();
           $data[ucode]=$res['ucode'];
           $data[name]= $res['name'];
           $data[lname]= $res['lname'];
           $result[content]=$data;
        }

echo $res=json_encode($result);

?>
Run Code Online (Sandbox Code Playgroud)

Actul Result:

{"status":1,"content":{"ucode":"431","name":"cdb","lname":"zsa"}}
Run Code Online (Sandbox Code Playgroud)

My expected Result:

{"status":1,"content":[{"ucode":"123","name":"abc","lname":"xyz"},{"ucode":"431","name":"cdb","lname":"zsa"}]}
Run Code Online (Sandbox Code Playgroud)

please, Guide me where is mistake, not getting the expected result.

Rah*_*hul 5

Why need loop, if you can directly push data into content index of result.

$result         = [];
$result["status"] = 1;
$data           = [
    ["ucode" => "123", "name" => "abc", "lname" => "xyz"],
    ["ucode" => "431", "name" => "cdb", "lname" => "zsa"],
];
$result['content'] = $data;
echo $res = json_encode($result);
Run Code Online (Sandbox Code Playgroud)

Short form of it,

$result = ['status' => 1, 'content' => $data];
echo json_encode($result);
Run Code Online (Sandbox Code Playgroud)

Working demo.

Output

{"status":1,"content":[{"ucode":"123","name":"abc","lname":"xyz"}, 
 {"ucode":"431","name":"cdb","lname":"zsa"}]}
Run Code Online (Sandbox Code Playgroud)

  • 我认为原答案没有任何解释,这是(我认为)问题所在。 (2认同)