PHP如何正确将数组写入文件,避免输出为Array字符串
PHP将数组写入文件的问题解决方案
问题原因
PHP中数组被直接当作字符串拼接时,会默认转换为固定字符串Array,不会展开内部结构,你原有写法仅适配字符串类型变量,无法兼容数组。
最优适配方案(生成可直接执行的PHP变量文件)
使用PHP原生函数var_export(),它可以返回变量的可解析PHP代码表示,第二个参数传入true时会将结构以字符串形式返回,完美适配生成PHP变量定义文件的需求。
修改后的代码如下:
// 兼容字符串、数组、数字、布尔等几乎所有常规变量类型 $var = ['a' => 1, 'b' => ['子元素1', '子元素2']]; $writeContent = "<?php \$var = " . var_export($var, true) . ";"; fwrite($file, $writeContent);
生成的文件后续直接引用$var即可得到和原结构完全一致的数组,关联数组、多维数组都可完美支持,特殊字符也会自动完成转义,无需手动处理。
其他可选存储方案(仅用于存储后读取,不生成可执行PHP代码)
如果你不需要生成直接可运行的PHP定义文件,只是临时存储数组后续读取使用,也可以选择以下方案:
- 序列化存储:用
serialize($var)序列化后写入文件,读取时用unserialize()解析还原数组 - JSON格式存储:用
json_encode($var, JSON_UNESCAPED_UNICODE)转JSON字符串写入,读取时用json_decode(xxx, true)还原关联数组
内容的提问来源于stack exchange,提问作者prerelease217
相关产品推荐
相关产品推荐

