PHP:变量未正确解释?

PHP:变量未正确解释?,php,stack-overflow,json,Php,Stack Overflow,Json,我不确定该问什么问题,因为我不确定是什么原因造成的 下面是正在发生的事情 我有一个函数是这样开始的: function core_stackoverflow_init($obj){ $options = $obj->options; $options->query = (string)$options->query; $options->query = "key=xxxxxxxxxxxxxx&answers=true&body

我不确定该问什么问题,因为我不确定是什么原因造成的

下面是正在发生的事情

我有一个函数是这样开始的:

function core_stackoverflow_init($obj){
    $options = $obj->options;   
    $options->query = (string)$options->query;
    $options->query = "key=xxxxxxxxxxxxxx&answers=true&body=true&comments=true";

    $fp = fsockopen("api.stackoverflow.com", 80, $errno, $errstr, 30);

    if (!$fp){ 
        echo 'Could not connect to StackOverflow'; return false; 
    }

$out = "GET /1.1/".$options->resource."?".$options->query." HTTP/1.1\r\n";
当我对第3行和第4行
回显$options->query
时,它们回显为相同的内容,因此我认为
$obj->options->query
可以正常工作。 但是,stackoverflow仅在我有第4行时才返回完整响应(手动重新分配
$options->query
)。我得到了stackoverflow的回复,但是我没有得到任何评论,如果我将&body=true移到后面,我就不会得到body。但是如果我使用第4行,我会得到我所期望的一切

这就像第3行被终止或被错误地解释

$obj是由一个
json_decode()
组成的,所以我想可能是解码把它转换成了一个整数或是一些奇怪的东西,这就是为什么你会看到我把var转换成一个(字符串)…只是为了确定一下

我尝试了
urlencode()
,但没有成功

有没有什么特殊的字符或者你能想到的东西,我可以通过测试来调试它

编辑:

当变量提到var_时,有一个很大的区别:

string(75) "body=true&answers=true&comments=true&key=XXXXXXXXXXXXXXXXXXXXXX"
string(63) "key=XXXXXXXXXXXXXXXXXXXXXX&answers=true&body=true&comments=true"
因此,我对第一个值进行了修剪($options->query),并得到了相同的响应


好吧,我想起来了。谢谢你提醒我去var_dump

所以我做了一个bin2hex,这样我就可以看到实际的十六进制代码。结果是输入从浏览器变成了html_实体


所以我做了一个html实体解码,它工作了。

当你使用
var\u dump()
第3行或第4行的值时有什么区别吗?就像65Fbef05写的,作为初学者使用
var\u dump
。你为什么使用
fsockopen()
而不是,比如说,
file\u get\u contents()
?@NullUserException:只是因为我设置了一些标题,但我想我可以使用流上下文,我猜这正是我所做的。@65Fbef05,我在上面添加了var_dumps。是什么导致两个相同“字符”的字符串大小不同。