$routeRequestContent = ...;
$ch = curl_init();
if(FALSE === $ch){
throw new Exception("Failed to initialize curl");
}
$header = array();
$header[] = 'Content-type: application/json';
$header[] = 'Accept: application/json';
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $routeRequestContent);
$server_output = curl_exec($ch);
$server_output = json_decode($server_output, true);
if(!empty($server_output['data'])){
$data = $server_output['data'];
foreach($data as $value){
print_r($value);
$value['minutesToNext'] = 'hey';
print_r($value);
die();
}
}
curl_close($ch);
所以我正在向API发出一个php curl请求。在循环中,我所做的就是在我从curl获得的数据中打印第一个数组,并尝试操作索引(minutesToNext)值。我再次打印数组时得到的是同一个数组,但是有一个新的索引(不是预期的更新)。新索引只是附加了一些字符的旧索引。
同样,如果我将$ value [' minutesToNext']分配给变量,它将无效。什么都不会被分配。所以基本上我根本不能使用返回数据。我试图消毒返回的结果,但没有任何工作。我已经能够解析返回结果的键和值,并动态地"从键中分配变量,但由于某种原因,变量将附加相同的精确字符。任何的想法?我相信从卷曲中得到的数据有问题,但我似乎无法修复它。 任何帮助将不胜感激。
答案 0 :(得分:2)
我认为从卷曲中得到的数据存在问题
不,一切都很好。
无法与该数据有关 - 因为键是由您在脚本中指定的:
$value['minutesToNext'] = 'hey';
当我只是将此处的复制并粘贴到十六进制编辑器中时,它会在e2 80 8b
和minutesToNext
之间直接显示字节值'
,这就是UTF-8表示zero-width space字符。
它可能通过复制和粘贴进入那里,可能来自某个网站(当代码以HTML格式显示时,作者/ CMS有时会插入零宽度空格,以控制换行行为)...标记编辑器中的整个'minutesToNext'
文本,重新输入它......你应该没问题。
(另外你应该在foreach循环中传递每个引用的值,正如Magnus在评论中所说,好的捕获。)