如何将多维数组以字符串形式表示 - PHP

3
这是一个关于php中混合、多级、不规则数组的示例:
$settings['style_formats'] = array(
  array('title' => 'Center table', 'selector' => 'table', 'styles' => array('margin-left' => 'auto', 'margin-right' => 'auto')),
  array('title' => 'Menu style', 'selector' => 'ul,ol', 'classes' => 'menu'),
  array('title' => 'Layer2', 'inline' => 'div', 'styles' => array('background-color' => 'orange')),
  array('title' => 'Bold text', 'inline' => 'b'),
  array('title' => 'Red text', 'inline' => 'span', 'styles' => array('color' => '#ff0000')),
  array('title' => 'Red header', 'block' => 'h1', 'styles' => array('color' => '#ff0000')),
  array('title' => 'Example 1', 'inline' => 'span', 'classes' => 'example1'),
  array('title' => 'Example 2', 'inline' => 'span', 'classes' => 'example2'),
  array('title' => 'Table styles'),
  array('title' => 'Table row 1', 'selector' => 'tr', 'classes' => 'tablerow1'),
);

我需要找到一种方法来表示和将这种数组从字符串格式转换为php数组的方法。初始字符串格式必须可读且可由使用文本编辑器的人编写。例如,它不应该是使用“serialize”的结果,因为“serialize”是一个PHP函数(而不可能由人类创建),并且该字符串必须可以在文本编辑器中手动创建。
该字符串将作为参数传递给一个函数,该函数将把它转换为像上面那样的php数组。
如果它是一个简单的数组,我会使用逗号分隔的字符串和“explode”。但是,它是多级的,所以使用“explode”将不起作用,因为它会拆分内部数组。 preg_split也看起来没有前途,因为数组非常不规则。
有什么想法如何做到这一点吗?

2
JSON是这个项目的好帮手。 - Brendon Cheves
@BrendonCheves:我不同意,如果你考虑到(缺乏)空格、Unicode、转义序列和大括号等因素,JSON并不是特别友好的人类语言。 - Alix Axel
3个回答

2

1

如果这是由人类编写的,YAML 可能是您最好的选择。

有几个 PHP 实现 可供使用。


1

JSON是许多解决方案之一,例如:(请原谅我没有格式)

{"style_formats":[{"title":"Center table","selector":"table","styles":{"margin-left":"auto","margin-right":"auto"}},{"title":"Menu style","selector":"ul,ol","classes":"menu"},{"title":"Layer2","inline":"div","styles":{"background-color":"orange"}},{"title":"Bold text","inline":"b"},{"title":"Red text","inline":"span","styles":{"color":"#ff0000"}},{"title":"Red header","block":"h1","styles":{"color":"#ff0000"}},{"title":"Example 1","inline":"span","classes":"example1"},{"title":"Example 2","inline":"span","classes":"example2"},{"title":"Table styles"},{"title":"Table row 1","selector":"tr","classes":"tablerow1"}]}

JSON在我的情况下效果最好。它的符号非常类似于本地php关联数组符号(对我来说是一个加分项)。此外,与simplexml相反,它只需要一行代码,而将xml导入嵌套的关联数组需要一些自定义代码,例如这个。JSON也忽略空格(对人类输入很好)。哦,我对Unicode也没有问题。 - camcam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接