Php使用unserialize()和serialize()更改已保存文件中的值

Mag*_*ero 3 php serialization

我有一个序列化的值数组保存到文件中,需要更改其中一个变量的值.在示例中,我更改$ 2的值,然后使用新值将整个数组保存回文件中.

是否有更有效的方法来改变单个值而不必读取和写入整个文件/数组.

$data = file_get_contents('./userInfo');

$data = unserialize($data);
extract($data);
$two="this is a altered value";

 $userData = array(
        'one'          => $one,
        'two'          => $two,
        'three'        => $three
        );

 $file=fopen("../userInfo",'w');
        fwrite($file, $userData);
 fclose($file);
Run Code Online (Sandbox Code Playgroud)

Pet*_*ley 8

您不需要像这样使用extract()rebuild $userData- 只需访问所需的数组键即可.此外,您可以使用file_put_contents()保存几个步骤

此函数与连续调用fopen(),fwrite()和fclose()以将数据写入文件相同.

新代码:

$filePath = './userInfo';

$data = unserialize( file_get_contents( $filePath ) );

$data['two'] = "this is a altered value";

file_put_contents( $filePath, serialize( $data ) );
Run Code Online (Sandbox Code Playgroud)