count():参数必须是一个数组或一个对象,它在PHP中的第428行错误处实现可计数
我试图将一些数据保存到一个API,但我一直收到此错误count():参数必须是一个数组或一个在第428行实现可计数的对象,,,,API正在向接受对象数组发送数据,但在我的数据子变量中引发了上述错误 请帮忙count():参数必须是一个数组或一个对象,它在PHP中的第428行错误处实现可计数,php,api,php-curl,Php,Api,Php Curl,我试图将一些数据保存到一个API,但我一直收到此错误count():参数必须是一个数组或一个在第428行实现可计数的对象,,,,API正在向接受对象数组发送数据,但在我的数据子变量中引发了上述错误 请帮忙 $children = '[{"child_name" => "Mmansa" , "child_dob" => "jdhjdhjd" }]'; $data = [ 'quote_id' => $quote, 'country_residence'
$children = '[{"child_name" => "Mmansa" , "child_dob" => "jdhjdhjd" }]';
$data = [
'quote_id' => $quote,
'country_residence' => $resd,
'physical_address' => $physical,
'children' => $children,
];
通过Curl发布
$res = $this->global_Curl($data, 'api/travel/save-policy-meta');
旋度函数
public function global_Curl($data, $url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, (env('API_ENDPOINT_NGINX_IP') . '/' . $url));
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
$response = json_decode(curl_exec($ch));
curl_close($ch);
return $response;
}
API要求的数据
{
"quote_id":136,
"country_residence":"Japan",
"physical_address":"Tokyo",
"children":[
{"child_name":"abc","child_dob":"23-05-2015"}
]
}
您的API需要JSON请求,该请求在
CURLOPT_POSTFIELDS
中作为数组发送,并且有一个字段作为无效的JSON字符串
此字符串不是有效的JSON
'[{"child_name" => "Mmansa" , "child_dob" => "jdhjdhjd" }]'
应该是这样的
'[{"child_name" : "Mmansa" , "child_dob" : "jdhjdhjd" }]'
这里不需要编写JSON字符串,而是可以使用方法将数组转换为JSON字符串
改变这个
$children[] = ["child_name" => "Mmansa" , "child_dob" => "jdhjdhjd"];
$data = [
'quote_id' => $quote,
'country_residence' => $resd,
'physical_address' => $physical,
'children' => $children,
];
然后试试这个代码
public function global_Curl($data, $url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, (env('API_ENDPOINT_NGINX_IP') . '/' . $url));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
$response = json_decode(curl_exec($ch));
curl_close($ch);
return $response;
}
您的
count
调用在哪里?您不需要将$children
声明为字符串。使用数组并使用json_encode()
将数组转换为json。@BartFriederichs在任何地方都没有使用任何计数调用,我只是将数据发布到API“[{“child_name=>”Mmansa“,”child_dob“=>”jdhjdhjd“}]”;对于您的API,可能无法作为数组读取,只是一个字符串。请显示您的第428行和周围环境。请添加一些解释,说明为什么他们应该尝试此操作。@非常感谢sanu,,它工作正常。。。如果我有另一个子数组,我可以这样做:$children[]=[“child\u name”=>“Mmansa”,“child\u dob”=>“jdjdhjd”][“child\u name”=>“Mmansa”,“child\u dob”=>“jdjdhjd”]
@Patweb如果您有另一个子数组,则必须在单独的行中添加,例如$children[]=[“child_name”=>“child1”,“child_dob”=>“dob1”]代码>$children[]=[“child\u name”=>“child2”,“child\u dob”=>“dob2”]代码>祝您编码愉快