php变量自动附加其他字符

时间:2017-10-18 15:14:53

标签: php curl

$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);

enter image description here

所以我正在向API发出一个php curl请求。在循环中,我所做的就是在我从curl获得的数据中打印第一个数组,并尝试操作索引(minutesToNext)值。我再次打印数组时得到的是同一个数组,但是有一个新的索引(不是预期的更新)。新索引只是附加了一些字符的旧索引。

同样,如果我将$ value [' minutesToNext']分配给变量,它将无效。什么都不会被分配。所以基本上我根本不能使用返回数据。我试图消毒返回的结果,但没有任何工作。我已经能够解析返回结果的键和值,并动态地"从键中分配变量,但由于某种原因,变量将附加相同的精确字符。任何的想法?我相信从卷曲中得到的数据有问题,但我似乎无法修复它。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

  

我认为从卷曲中得到的数据存在问题

不,一切都很好。

无法与该数据有关 - 因为是由您在脚本中指定的:

$value['minutesToNext​'] = 'hey';

当我只是将此处的复制并粘贴到十六进制编辑器中时,它会在e2 80 8bminutesToNext之间直接显示字节值',这就是UTF-8表示zero-width space字符。

它可能通过复制和粘贴进入那里,可能来自某个网​​站(当代码以HTML格式显示时,作者/ CMS有时会插入零宽度空格,以控制换行行为)...标记编辑器中的整个'minutesToNext​'文本,重新输入它......你应该没问题。

(另外你应该在foreach循环中传递每个引用的值,正如Magnus在评论中所说,好的捕获。)