2017-10-13 30 views
2

我有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

回答

0

讓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>

0

嘗試以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