我不知道标题是否能很好地解释,所以这就是我想要实现的目标。
使用此脚本,人们可以动态更改配置变量的值,如下所示:
Config::write('General.load', array('plugin1','plugin2'), true);
在该示例中,它将General.load配置变量更改为数组,并将第3个参数设置为true,这意味着它可以保存。
我想要合并的是保存部分的方法,当用户调用Config::save()
时,它循环遍历任何写入的配置变量,并将第3个参数设置为true。
它适用于布尔值,字符串,整数,浮点数等。但是当涉及到数组时,默认情况下,它只会将“数组”写入文件,而不是“array('plugin1','plugin2') ”
所以我继续开发了一个将数组转换为基于字符串的数组的小脚本。
这是函数(我必须把它放在pastebin上,格式化奇怪): http://pastebin.com/HsUG9n5D
它在某种程度上有效。
如果您提供的内容如下:
$array_to_string = ''; $array = array( 'welcome', 'to', 'my', array('website') ); array_build($array_to_string, $array, 0); die($array_to_string);
将输出:
array('welcome', 'to', 'my', array('website')),
它几乎奏效了。但是,如果我输入这样的内容:
$array_to_string = ''; $array = array( 'welcome', 'to', 'my', array('website'), array(array('goodbye', 'foo' => 'bar')) ); array_build($array_to_string, $array, 0); die($array_to_string);
输出结果为:
array('welcome', 'to', 'my', array('website')array(array('goodbye', 'foo' => 'bar'), ))
我已经查完了代码,我不太清楚我能做些什么来修复它。变量引用对我来说仍然有点复杂。
如果有人对我做错了什么有任何想法,请告诉我们。
干杯。
答案 0 :(得分:2)
var_export(),如果您希望将其保存为实际上有效的PHP字符串并且可以进行解析,那就很好。
这似乎与您的示例最匹配。
serialize()和 unserialize()适合将数组作为字符串存储在PHP应用程序内部。
json_encode()和 json_decode()在需要与其他语言或其他版本互操作时表现良好/ PHP的构建,或存储在持久存储等中,以实现数据的最大可移植性。
答案 1 :(得分:1)
尝试
var_export
- 输出或返回变量的可解析字符串表示PHP手册中的示例:
$a = array (1, 2, array ("a", "b", "c"));
var_export($a);
// output
array (
0 => 1,
1 => 2,
2 =>
array (
0 => 'a',
1 => 'b',
2 => 'c',
),
)
请参阅我对PHP Reading File的答案,了解如何在配置类中使用它。
答案 2 :(得分:0)
您要找的是serialize()及其对应的unserialize()
答案 3 :(得分:0)
您可能想尝试Pear Config包。