curl dost不会将输出作为字符串而不是数组

时间:2017-10-13 10:21:28

标签: php arrays curl

我有2台服务器serverA和serverB。

服务器A具有以下代码

$dir = "/boot";
echo "<pre>";
print_r(listFolders($dir));
function listFolders($dir)
{
   $dh = scandir($dir);
   $return = array();
   foreach ($dh as $folder)
   {
       if ($folder != '.' && $folder != '..')
       {
           if (is_dir($dir . '/' . $folder))
           {
               $return[] = array($folder => listFolders($dir . '/' . $folder));
           }
       }
   }
   return $return;

这将在serverA

中输出数组作为数组

但是当我从serverB用户卷曲时,它会将输出作为字符串。

如何从serverB获取数组输出?

我的输出显示为

Array
(
    [0] => Array
        (
            [efi] => Array
                (
                )    
        )    
    [1] => Array
        (
            [grub] => Array
                (
                    [0] => Array
                        (
                            [fonts] => Array
                                (
                                )    
                        )    
                    [1] => Array
                        (
                            [i386-pc] => Array
                                (
                                )    
                        )    
                    [2] => Array
                        (
                            [locale] => Array
                                (
                                )    
                        )    
                    [3] => Array
                        (
                            [x86_64-efi] => Array
                                (
                                )    
                        )    
                )    
        )    
)

但上面的输出显示为字符串而不是数组。

2 个答案:

答案 0 :(得分:0)

尝试以JSON格式返回数组。

例如。 return json_encode($return)

编辑1

如果你想传输一些这类数据,你必须以JSON格式或xml

进行传输

答案 1 :(得分:0)

让serverA使用json_encode()代替print_r()以JSON格式打印您的数据:

echo json_encode(listFolders($dir));

然后可以使用json_decode()将cURL的输出(将是JSON数组 STRING )转换为数组:

$dir_array = json_decode($stringReturnedByCURL);

cURL是一个HTTP客户端。它唯一能做的就是返回包含HTML网页的字符串。在这个网页中,你可以放置那个JSON数组。

这样您就可以使用HTTP将数据以JSON编码从serverA传输到serverB。 您问题中页面的输出只会以print_r格式打印数组,该格式没有解码该格式的功能。

警告:您需要打印JSON ,删除serverB中echo "<pre>";的{​​{1}}将发现意外{{1}在他必须解码的代码中。