如何通过php中的POST获取数据JSON多数组

时间:2018-10-05 12:04:32

标签: php codeigniter-3

希望获得一些帮助。我想使用PHP POST方法从json多数组获取数据,如果我使用不带多数组的JSON,则可以获取该数据。这是我的杰森:

{
    "total_record": "300",
    "data":
            [{
                    "guestid": "757",
                    "rsvid": "3706001",
                    "conf_no": "fnine-3706001",
                    "arrival_date": "2017-09-25 14:34:28",
                    "departure_date": "2017-09-26 11:18:35"
                },
                {
                    "guestid": "4835",
                    "rsvid": "3472001",
                    "conf_no": "fnine-3472001",
                    "arrival_date": "2018-03-28 00:00:00",
                    "departure_date": "2018-03-30 13:00:00"
                }]
}

对于如下所示的PHP代码:

print_r($_POST);

$fieldpost1 = $this->post();
print_r($fieldpost1);

$fieldpost2 = json_decode($this->input->post(), true);
print_r($fieldpost2);

结果:

Array ( ) Array ( )
A PHP Error was encountered

Severity: Warning

Message: json_decode() expects parameter 1 to be string, array given

Filename: controllers/Api.php

Line Number: 70

Backtrace:

任何人都可以帮助我,如果无法使用此方法,也许还有其他方法可以在PHP或Codeigniter中使用它,谢谢。

4 个答案:

答案 0 :(得分:0)

不要将True用作json解码

$json = json_decode($json);
print_r($json);

foreach ($json->data as $data)
{

        echo 'guestid : ' .$data->guestid .'<br/>';

    }
}

答案 1 :(得分:0)

在代码点火器$this->input->post('keyword', TRUE);方法中需要keyword。 您没有传递关键字,因此该关键字将返回NULL值。

如果要获取请求正文,请使用此

$requestBody = json_decode($this->input->raw_input_stream, true);

答案 2 :(得分:0)

您要将整个$_POST数组传递给json_decode()

尝试json_decode($this->input->post('json_field'));

答案 3 :(得分:0)

Tge post方法从浏览器返回参数的关联数组 根据定义,它不是json字符串

我们假设post发送的参数是json,我们可以使用它:

$json = $_POST['json'];

然后这应该工作:

print_r($json);

要获取json作为数组,则应使用true参数对json解码$ json以获得关联数组而不是对象

$jsonarray = array();
$jsonarray = json_decode($json, true);

现在要打印它,需要每一个:

foreach ($jsonarray as $fieldpost1) {
print_r($fieldpost1);
} 

希望有帮助