curl dost不以数组的形式给出输出

问题描述:

我有2个服务器serverA和serverB。curl dost不以数组的形式给出输出

服务器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 
           (
           )  
         )  
       )  
     )  
) 

但上面的输出是表明我作为字符串,而不是数组。

+0

等待,serverA和serverB都是web服务器,对不对?你试图使用curl从serverA到serverB的数据? – NoImaginationGuy

让serverA的打印JSON格式的数据的print_r()

echo json_encode(listFolders($dir)); 

然后卷曲的输出(这将是一个JSON阵列STRING)可以转化使用json_decode()阵列:

$dir_array = json_decode($stringReturnedByCURL); 

卷曲是HTTP客户端。它唯一做的就是返回包含HTML网页的字符串。在这个网页中,您可以放入该JSON数组。

通过这种方式,您使用HTTP将您的数据编码为JSON,从serverA到serverB。 您问题中页面的输出仅打印print_r格式的数组,该格式不具有解码该格式的功能。

警告:您需要打印的JSON 只有,除去在ServerB上的json_decode()echo "<pre>";会发现他有解码代码意外<pre>

尝试以JSON格式返回数组。

例如。 return json_encode($return)

编辑1

,如果你想传递一些这些类型的数据,那么你必须这样做以JSON格式或使用json_encode()代替XML

+0

这不会解决我的目的 – LOKESH

+1

好,然后请简要描述你的问题。 –

+0

我用下面的命令检索输出 $ data ='sudo/usr/bin/curl --silent -m 15 http:// $ serveraip/treeview.php'; 这显示输出为字符串而不是数组。 – LOKESH