创建数组的字符串版本

时间:2010-07-28 07:11:20

标签: php arrays string

我不知道标题是否能很好地解释,所以这就是我想要实现的目标。

使用此脚本,人们可以动态更改配置变量的值,如下所示:

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'), ))

我已经查完了代码,我不太清楚我能做些什么来修复它。变量引用对我来说仍然有点复杂。

如果有人对我做错了什么有任何想法,请告诉我们。

干杯。

4 个答案:

答案 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包。