我正在尝试找出一种简单的方法来获取列表,比如
foo: Alpha
bar: Bravo
fooBar: Charlie
并将其转换为关联数组,以便值为
$array['foo'] //would contain Alpha
$array['bar'] //would contain Bravo
等
实现这一目标的最简洁方法是什么?
答案 0 :(得分:2)
如果您的第一个列表已在数组中,您可以手动执行此操作:
$array = [];
$list = ['foo: Alpha', 'bar: Bravo'];
foreach ($list as $element) {
$parts = explode(': ', $element);
$array[$parts[0]] = $parts[1];
}
否则,只需使用parse_ini_string
将包含数据的字符串解析为关联数组(请注意,此函数需要PHP 5.3或更高版本。)
如果您的数据是字符串,而您没有PHP 5.3,则可以拆分新行以获取数组:$list = explode("\n", $string);
。
答案 1 :(得分:1)
这样的东西?:
$string = "foo: Alpha
bar: Bravo
fooBar: Charlie";
$array = array();
$lines = explode("\n", $string);
foreach ($lines as $line) {
list($key, $value) = explode(": ", $line);
$array[$key] = $value;
}
var_dump($array);
结果:
array(3) {
["foo"]=>
string(6) "Alpha
"
["bar"]=>
string(6) "Bravo
"
["fooBar"]=>
string(7) "Charlie"
}
答案 2 :(得分:0)
试试这个: $ array = array();
$str = 'foo: Alpha';
$res = explode(":",$str);
$array[$res[0]] = $res[0];
答案 3 :(得分:0)
也许这有点过分,但如果您的文件格式可能会扩展,那么值得研究YAML,您的示例恰好是有效的YAML标记。例如,您可以使用Symfony YAML component
use Symfony\Component\Yaml\Yaml;
$array = Yaml::parse('/path/to/file.yml');
它适用于您当前的格式,如果您决定添加嵌套数组或其他非平凡数据,只需使用YAML语法,这非常直观。以下是对格式的介绍: http://symfony.com/doc/2.0/components/yaml/yaml_format.html