我有一个数组,使用后看起来像跟随 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)
这里有两种方法:
(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() 将不起作用。每个变量都由类型和长度定义,这些值必须随着您所做的实际更改而更新。
| 归档时间: |
|
| 查看次数: |
37935 次 |
| 最近记录: |