Как получить данные JSON multi array через POST в php - PullRequest
0 голосов
/ 05 октября 2018

Нужна помощь.Я хочу получить данные из мультимассива json с помощью метода 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 голосов
/ 05 октября 2018

Метод post Tge возвращает ассоциативный массив параметров из браузера. По определению, это не строка json

Предположим, что параметр, отправленный post, является json, мы можем поиграть с этим:

$json = $_POST['json'];

Тогда это должно работать:

print_r($json);

Чтобы получить json в виде массива, вам нужно json декодировать $ json с истинным параметром, чтобы получить ассоциативный массив, а не объект

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

теперь, чтобы напечатать его, необходим foreach:

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

надежда, которая помогает

0 голосов
/ 05 октября 2018

в codeigniter $this->input->post('keyword', TRUE); требуется метод keyword.Вы не передали ключевое слово, чтобы оно возвращало NULL значение.

, если вы хотите получить тело запроса, используйте это

$requestBody = json_decode($this->input->raw_input_stream, true);
0 голосов
/ 05 октября 2018

Вы передаете весь массив $_POST в json_decode().

Попробуйте json_decode($this->input->post('json_field'));

0 голосов
/ 05 октября 2018

Не используйте True в вашем JSON-декодере

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

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

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

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...