$ch = curl_init("url");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "test");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$outputArray = curl_exec($ch);
然后$ outputArray将包含:
Array
(
[0] => Array
(
[r1] => test response
[r2] => 4
[r3] => 32
)
)
所以我认为PHP可以看到它是一个数组并对其进行处理,但当我做类似的事情时
echo $outputCode[0][r_title]."\n";
它出错了:
PHP Fatal error: Cannot use string offset as an array in /www/test.php on line 75
(第75行是上面的回声)
我做错了什么?
答案 0 :(得分:4)
您获得的数据可能不是数组,而是包含数组结构的字符串,例如由print_r()
输出。这种数据将不自动转换回PHP数组。
如果您可以控制要查询的页面,请使用serialize()或json_encode()之类的方法对数据进行编码,并在查询方面使用({{}解码从curl获取的数据分别为3}}或unserialize())。这些函数将为您提供正确的PHP数组。
如果你无法改变URL输出数据的方式,我可以看到的唯一方法就是(哎呀!)使用json_decode() - 如果需要,我可以详细说明,但它确实是真的坏主意。
答案 1 :(得分:2)
您的$outputArray
是字符串,似乎包含类似print_r()
的输出。
PHP无法猜测该字符串代表一个数组 - 并且它并不真正接近用于声明数组的语法;所以这不起作用。
解决方案是:
serialize
json_encode
unserialize
json_decode