如何使用file_put_contents将PHP数组正确写入PHP文件?
问题原因
直接拼接数组变量到字符串时,PHP会自动将数组类型转为字面量Array,因此无法得到数组的结构内容。serialize()返回的是序列化后的字符串,不是PHP可执行的数组语法,自然不符合需求。
解决方案
使用PHP内置的var_export()函数,这个函数会返回变量的合法PHP代码表示,刚好满足写入可执行数组结构到PHP文件的需求。
基础实现代码
<?php $arr = array('red'); $var = 'target_var'; // 自定义存储数组的变量名 // var_export第二个参数设为true表示返回字符串而非直接输出 $array_code = var_export($arr, true); $content = "<?php \n\${$var} = {$array_code};\n?>"; file_put_contents('file.php', $content); ?>
生成的file.php默认内容
<?php $target_var = array ( 0 => 'red', ); ?>
如果需要你期望的array('red')紧凑写法,可通过字符串替换去掉换行和缩进,示例如下:
<?php $arr = array('red'); $var = 'target_var'; $array_code = var_export($arr, true); // 替换换行和多余空格得到紧凑格式 $compact_code = str_replace(["\n", " "], '', $array_code); $content = "<?php \n\${$var} = {$compact_code};\n?>"; file_put_contents('file.php', $content); ?>
内容的提问来源于stack exchange,提问作者Borja
相关产品推荐
相关产品推荐

