我有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
(
)
)
)
)
)
但上面的输出显示为字符串而不是数组。
答案 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}在他必须解码的代码中。