在php中将数组写入文件并获取数据

Ang*_*uha 7 php

我有一个数组,使用后看起来像跟随 print_r

Array ( [0] => Array ( [0] => piklu [name] => piklu ) [1] => Array ( [0] => arindam [name] => arindam ) [2] => Array ( [0] => shyamal [name] => shyamal ) [3] => Array ( [0] => arko [name] => arko ) [4] => Array ( [0] => pamela [name] => pamela ) [5] => Array ( [0] => dodo [name] => dodo ) [6] => Array ( [0] => tanmoy [name] => tanmoy ) [7] => Array ( [0] => jitu [name] => jitu ) [8] => Array ( [0] => ajgar [name] => ajgar ) ) 
Run Code Online (Sandbox Code Playgroud)

现在我想将这个数组直接写入一个文件,我使用的file_put_contents方法,但我不知道如何从文件中获取它们看起来像原始文件的数据.有什么想法解决这个问题?

Mar*_*ant 27

您目前的问题基本上是您只能将字符串写入文件.因此,为了使用file_put_contents您首先需要将您的数据转换为字符串.

对于这个特定的用例,有一个名为serialize的函数,它将任何PHP数据类型转换为字符串(资源除外).

这里有一个如何使用它的例子.

$string_data = serialize($array);
file_put_contents("your-file.txt", $string_data);
Run Code Online (Sandbox Code Playgroud)

您可能还想稍后提取数据.只需使用unserialize将文件中的字符串数据转换回数组即可.

这是你如何做到的:

$string_data = file_get_contents("your-file.txt");
$array = unserialize($string_data);
Run Code Online (Sandbox Code Playgroud)


Pat*_*ore 8

这里有两种方法:

(1) 将数组对象的 JSON 表示写入文件。

$arr = array( [...] );
file_put_contents( 'data.txt', json_encode( $arr ) );
Run Code Online (Sandbox Code Playgroud)

然后后来...

$data = file_get_contents( 'data.txt' );
$arr = json_decode( $data, true );
Run Code Online (Sandbox Code Playgroud)

(2) 将数组对象的序列化表示写入文件。

$arr = array( [...] );
file_put_contents( 'data.txt', serialize( $arr ) );
Run Code Online (Sandbox Code Playgroud)

然后后来...

$data = file_get_contents( 'data.txt' );
$arr = unserialize( $data );
Run Code Online (Sandbox Code Playgroud)

我更喜欢 JSON 方法,因为它不像序列化那样容易损坏。您可以打开数据文件并对其内容进行编辑,它会编码/解码而不会让人头疼。序列化的数据不能轻易改变或损坏,否则 unserialize() 将不起作用。每个变量都由类型和长度定义,这些值必须随着您所做的实际更改而更新。

  • PHP & Json 唯一的“问题”是您需要正确处理数组。PHP 不区分列表和哈希/对象(如 javascript/json),在 PHP 中你只有一个数组。所以你可能想看看 `json_encode()` 的第二个参数来得到它。 (2认同)