Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从curl响应中获取可用的数组,该响应被格式化为php数组_Php_Arrays_Curl_Multidimensional Array - Fatal编程技术网

从curl响应中获取可用的数组,该响应被格式化为php数组

从curl响应中获取可用的数组,该响应被格式化为php数组,php,arrays,curl,multidimensional-array,Php,Arrays,Curl,Multidimensional Array,那么$outputArray将包含: $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将包含:

$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);
因此,我认为PHP可以看到它是一个数组,并将其视为数组,但当我执行以下操作时

Array
(
[0] => Array
    (
        [r1] => test response
        [r2] => 4
        [r3] => 32
    )

)
它给出了一个错误:

echo $outputCode[0][r_title]."\n";
(第75行为正上方的回音)


我做错了什么?

您的
$outputArray
一个字符串,似乎包含类似
print\u r()的输出

PHP无法猜测字符串代表数组——而且它与用于声明数组的语法并不接近;所以这是行不通的


解决办法是:

  • 修改正在调用的远程脚本,使其返回一个包含一些序列化数据的字符串
    • i、 e.和数组,用
      序列化
    • 或者使用
      json\u编码
  • 在您这边,取消序列化数据,以恢复阵列,
    • 使用
      取消序列化
    • json\u解码

您获取的数据可能不是数组,而是包含数组结构的字符串,例如,
print\r()
输出。此类数据不会自动转换回PHP数组

如果您可以控制从中查询的页面,那么可以使用类似或的方法对数据进行编码,在查询端,分别使用(或)对从curl中获取的数据进行解码。这些函数将为您提供一个合适的PHP数组


如果你无法更改URL输出数据的方式,我唯一能看到的方法就是使用-如果需要,我可以详细说明,但这真的是个坏主意。

好的,是的,我更改了我查询的页面:)谢谢。如果我们有伟大的思想(好吧,那将是个好消息,不是吗?),那么,是的,他们有;-)我当然会给你们两个打勾,因为两个答案都一样正确,但遗憾的是我不能。波亚,别担心:-)重要的是你们得到了一个(好的,两个)答案。
PHP Fatal error:  Cannot use string offset as an array in /www/test.php on line 75