Я получил некоторые данные в PHP и пытаюсь опубликовать в API, который имеет данные в формате JSON. Но когда я публикую данные, я получаю сообщение об ошибке count (): параметр должен быть массивом или объектом, который реализует Countable в LINE 428 ,, Я работаю над XAMPP версии 7.2.1 и после проверки в Интернете я изменил версию на 5.6, но ошибка по-прежнему сохраняется.
Пример данных, требуемых API
{"quote_id":112,
"country_residence":"Spain",
"physical_address":"*********",
"kra":"***********",
"policy_origin":"***********",
"policy_destination":"*********",
"with_spouse":1,
"spouse_id_passport":"B2345",
"spouse_name":"Spouse Name",
"spouse_dob":"1995-10-09",
"with_nok":1,
"nok_relation":"Son",
"nok_name":"NOK Full Names",
"nok_physical_address":"Physical address",
"nok_phone":"254**********",
"nok_email":"email2email.com",
"with_children":1,
"children":[
{"child_name":"abc","child_dob":"2015-05-23"}
]
}
Мои данные PHP вместе с CURL
array:18 [
"quote_id" => 355
"country_residence" => "297""physical_address" => "MMNMNMNM""kra" => "A123456789P""policy_origin" => "297""policy_destination" => "375""with_spouse" => 1
"spouse_id_passport" => "A1234567""spouse_name" => "Martin""spouse_dob" => "1977-02-09""with_nok" => 1
"nok_relation" => "Son""nok_name" => "MNMNMN""nok_physical_address" => "MMNMNMNM""nok_phone" => "MNMNMN""nok_email" => "NMMNMMNMNN""with_children" => 1
"children" => "{"child_name":"martin","child_dob":"2018-10-30"}"]
//Call the curl function posting the data
$res = $this->global_Curl($data, 'api/travel/save-policy-meta');
//Curl function
public function global_Curl($data, $url)
{
//dd($_ENV['API_ENDPOINT_NGINX_IP'] . '/' . $url);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, ('http://digital.***********' . '/' . $url));
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//Prevents usage of a cached version of the URL
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
$response = json_decode(curl_exec($ch));
curl_close($ch);
// Log::debug($response);
return $response;
}
Ваш массив «children» в вашем основном массиве не похож на массив. Измените его формат массива. Подобно,
array("child_name" => "martin", "child_dob" => "2018-10-30")
Также я не вижу ‘,’ разделяющих элементы массива.
РЕДАКТИРОВАТЬ
Я не знаю, что вы подразумеваете под array:18
, Но если вы используете count () или кодировку json, параметр должен быть массивом. Подобно,
$array = array(
"quote_id" => 355,
"country_residence" => "297",
"physical_address" => "MMNMNMNM",
"kra" => "A123456789P",
"policy_origin" => "297",
"policy_destination" => "375",
"with_spouse" => 1,
"spouse_id_passport" => "A1234567",
"spouse_name" => "Martin",
"spouse_dob" => "1977-02-09",
"with_nok" => 1,
"nok_relation" => "Son",
"nok_name" => "MNMNMN",
"nok_physical_address" => "MMNMNMNM",
"nok_phone" => "MNMNMN",
"nok_email" => "NMMNMMNMNN",
"with_children" => 1,
"children" => $children,
);
В ожидаемом выходе …
"children":[
{"child_name":"abc","child_dob":"2015-05-23"}
]
Предполагается, что у вас есть массив дочерних объектов, поэтому это массив массивов. Поскольку вы добавляете только один дочерний элемент, вам нужно обернуть его во второй массив (обратите внимание на дополнительный набор []
округлить значение) …
$children = [['child_name' => $childname , 'child_dob' => $childdob]];
Я думаю, что идея состоит в том, что если бы у вас было несколько дочерних элементов, они могли бы проходить через них …
$children = [['child_name' => $childname , 'child_dob' => $childdob],
['child_name' => $childname2 , 'child_dob' => $childdob2],
['child_name' => $childname3 , 'child_dob' => $childdob3]];
Добавьте это в свой массив, используя …
$array = array(
"quote_id" => 355,
"country_residence" => "297",
"physical_address" => "MMNMNMNM",
"kra" => "A123456789P",
"policy_origin" => "297",
"policy_destination" => "375",
"with_spouse" => 1,
"spouse_id_passport" => "A1234567",
"spouse_name" => "Martin",
"spouse_dob" => "1977-02-09",
"with_nok" => 1,
"nok_relation" => "Son",
"nok_name" => "MNMNMN",
"nok_physical_address" => "MMNMNMNM",
"nok_phone" => "MNMNMN",
"nok_email" => "NMMNMMNMNN",
"with_children" => 1,
"children" => $children,
);
header('Content-Type: application/json');
echo json_encode($array);