如何从参数文件中读取内容并替换变量值
程序员文章站
2022-05-30 10:27:06
...
A.TXT内容如下
01:富裕
02:一般
03:贫穷
C.TXT内容如下
01:中国
02:美国
03:德国
04:法国
05:葡萄牙
php文件中
$a1=02
$a2=01
$a3=03
$c1=01
$c2=03
$c3=05
请问如何将a开头的变量都替换成A.TXT中的富裕程度,将c开头的变量都替换成国家名字?
富裕
贫穷
中国
德国
葡萄牙
你的方案就是错的,不可能获得良好的性能
01:富裕
02:一般
03:贫穷
C.TXT内容如下
01:中国
02:美国
03:德国
04:法国
05:葡萄牙
php文件中
$a1=02
$a2=01
$a3=03
$c1=01
$c2=03
$c3=05
请问如何将a开头的变量都替换成A.TXT中的富裕程度,将c开头的变量都替换成国家名字?
回复讨论(解决方案)
file_get_contents函数读取txt内容
首先explode("\r\n", $txt)分行
遍历上一步结果,再用explode拆冒号
得到一个数组:array('01' => '富裕', '02' => '一般')
剩下就好办了
这个思路我考虑过,给这么多分的原因是想要一个很优化的方案,因为配置文件多且大,每个变量要遍历一遍,速度很慢。
$a1 = '02';$a2 = '01';$a3 = '03';$c1 = '01';$c2 = '03';$c3 = '05';$na = 'a';parse_str(str_replace(array(':', PHP_EOL), array('=', '&'), file_get_contents("data/$na.txt")), $ar);foreach(preg_grep("/^$na\d+/", array_keys(get_defined_vars())) as $v) { $$v = $ar[$$v];}$na = 'c';parse_str(str_replace(array(':', PHP_EOL), array('=', '&'), file_get_contents("data/$na.txt")), $ar);foreach(preg_grep("/^$na\d+/", array_keys(get_defined_vars())) as $v) { $$v = $ar[$$v];}echo $a1, PHP_EOL;echo $a2, PHP_EOL;echo $a3, PHP_EOL;echo $c1, PHP_EOL;echo $c2, PHP_EOL;echo $c3, PHP_EOL;一般
富裕
贫穷
中国
德国
葡萄牙
你的方案就是错的,不可能获得良好的性能
想要优化?
将txt中的原格式转换到易用的php数组后,用内置的序列化函数生成字符串再保存回去
这样后面省去了解析的过程
但这个东西重点在于大文件的IO上,要么换mysql,要么用memcache
上一篇: 第05篇:C#星夜拾遗之使用数据库
下一篇: 详解CSS盒子效果