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
(
)
)
)
)
)
但上面的输出是表明我作为字符串,而不是数组。
答
让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>
。
等待,serverA和serverB都是web服务器,对不对?你试图使用curl从serverA到serverB的数据? – NoImaginationGuy