如何在这段代码中创建我期望的json

时间:2018-02-01 05:48:41

标签: php arrays json

我有一个数组使用我想让我的json响应,但我无法做到这一点:

print_r($exist_email);

    Array
(
    [user_id] => 3
)

我试过这个

$response_array['status']='Exist User';
$response_array['message']='Email already exists.';
$response_array['data']=$exist_email;
$this->response($this->json($response_array), 200);

public function response($data,$status=200){
            $this->_code = ($status)?$status:200;
            $this->set_headers();
            echo $data;
            exit;
        }

protected function json($data){
            if(is_array($data)){
                return json_encode($data);
            }
        }

我收到回复

    {
    "status": "Exist User",
    "message": "Email already exists.",
    "data": {
        "user_id": "3"
    }
}

我的预期输出

    {
    "status": "Exist User",
    "message": "Email already exists.",
    "data": [
        {
            "user_id": "3"
        }
    ]
}

4 个答案:

答案 0 :(得分:3)

根据我的评论,您应该在此行$response_array['data']=$exist_email;

中使用多维数组

以上行可以替换为以下行

$response_array['data'][0]=$exist_email;

OR

$response_array['data'][]=$exist_email;

您可以在此处查看所需的Output

答案 1 :(得分:1)

如果您需要阵列,可以:

$response_array['data'] = array();

$response_array['data'][] = $exist_email;
$response_array['data'][] = $exist_email2; /* For the second, (optional) */

答案 2 :(得分:0)

您的预期输出是数组数组,因此您需要将$response_array['data']作为数组。

只需替换此行

$response_array['data']=$exist_email;

$response_array['data'][]=$exist_email;

答案 3 :(得分:0)

您需要使用数组来获得所需的输出。

您可以尝试以下代码:

<?php

$response_array['status']='Exist User';
$response_array['message']='Email already exists.';
$response_array['data'][]= array('user_id' => 3);

echo json_encode($response_array, JSON_PRETTY_PRINT);

检查:https://3v4l.org/o2QGX