json输出到文件再次在php中可读

时间:2012-09-16 13:23:18

标签: php arrays json transfer

我希望能够通过ftp以文件的形式将php数组从一台服务器传输到另一台服务器。

接收服务器需要能够打开所述文件并读取其内容并使用提供的阵列。

我已经考虑过这两种方式,或者从服务器1用一个数组的PHP代码编写一个php文件,然后简单地在服务器2上加载这个文件。但是,当深度为2时,编写所述文件会变得棘手。数组未知。

所以我虽然将数组写入json编码的文件,但我不知道第二台服务器如何打开并读取所述数据。

我可以这样做:

$jsonArray= json_encode($masterArray);
$fh = fopen('thefile.txt' , 'w');
fwrite($fh, $thePHPfile);
fclose($fh);

然后在另一台服务器上将数据打开成一个变量:

$data = json_decode( include('thefile.txt') );

以前有没有人有这方面的经验?

4 个答案:

答案 0 :(得分:3)

对于第一台服务器,通过FTP连接到第二台服务器并将该文件内容放入文件

$jsonArray = json_encode($masterArray);
$stream    = stream_context_create(array('ftp' => array('overwrite' => true))); 
file_put_contents('ftp://user:pass@host/folder/thefile.txt', $jsonArray, 0, $stream);

file_get_contents()用于第二台服务器:

$data = json_decode( file_get_contents('/path/to/folder/thefile.txt') );

答案 1 :(得分:2)

如果您只对使用PHP阅读文件感兴趣,是否考虑过使用serialize()unserialize()

请参阅http://php.net/manual/en/function.serialize.php

它的可能json_encode() / json_decode()更快(见http://php.net/manual/en/function.serialize.php#103761)。

答案 2 :(得分:1)

您要查找的PHP函数是: file_get_contents

$masterArray = array('Test','Test2','Test3');
$jsonArray= json_encode($masterArray);
$fh = fopen('thefile.txt' , 'w');
fwrite($fh, $jsonArray);
fclose($fh);

然后在另一台服务器上:

$masterArray = json_decode( file_get_contents('thefile.txt') );
var_dump($masterArray);

答案 3 :(得分:1)

要使用文件作为媒介在服务器之间“传输”数组,您可以使用json_encodejson_decode找到一个不错的解决方案。 serializeunserialize函数可以很好地执行相同的目标。

$my_array = array('contents', 'et cetera');

$serialized = serialize($my_array);
$json_encoded = json_encode($my_array);

// here you send the file to the other server, (you said you know how to do)
// for example:
file_put_contents($serialized_destination, $serialized);
file_put_contents($json_encoded_destination, $json_encoded);

在接收服务器中,您只需要读取文件内容并应用相应的“解析”功能:

$serialized = file_get_contents($serialized_destination);
$json_encoded = file_get_contents($json_encoded_destination);

$my_array1 = unserialize($serialized);
$my_array2 = json_decode($json_encoded);