php curl的隐藏BUG

<?php
$a = array(
    'a' => 2,
    'b' => 3,
);

$curl  = curl_init();
$b = $a;
curl_setopt_array($curl, array(
     CURLOPT_POSTFIELDS => $b
));

var_dump($a);

今天遇到一个神奇的BUG:

上述执行完以后,$a和$b里面的数据变成了字符串型

如果在$b=$a后,改变一下$b以后(比如$b['c'] = 3;),$a就正常了。

个人猜测原因应该是$b=$a后,如果没有修改$b,则它们指向同一个内存区域。

 

而之所以$b的数据会变成字符串型,应该是curl_setopt_array()的BUG,PHP7以后这个BUG就不存在了

posted @ 2018-06-26 19:48  小昌君  阅读(212)  评论(0编辑  收藏  举报