count():参数必须是一个数组或一个对象,它在PHP中的第428行错误处实现可计数

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'

我试图将一些数据保存到一个API,但我一直收到此错误count():参数必须是一个数组或一个在第428行实现可计数的对象,,,,API正在向接受对象数组发送数据,但在我的数据子变量中引发了上述错误

请帮忙

$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”]祝您编码愉快