我正在尝试一种简单的方法来获取列表,就像这样
foo: Alpha
bar: Bravo
fooBar: Charlie
并将其转换为关联数组,以便值
$array['foo'] //would contain Alpha
$array['bar'] //would contain Bravo
等等
实现这一目标的最干净的方法是什么?
我正在尝试一种简单的方法来获取列表,就像这样
foo: Alpha
bar: Bravo
fooBar: Charlie
并将其转换为关联数组,以便值
$array['foo'] //would contain Alpha
$array['bar'] //would contain Bravo
等等
实现这一目标的最干净的方法是什么?
如果您的第一个列表已经在数组中,您可以手动执行此操作:
$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);
.
像这样的东西?:
$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"
}
试试这个: $array = array();
$str = 'foo: Alpha';
$res = explode(":",$str);
$array[$res[0]] = $res[0];
也许这是矫枉过正,但如果您的文件格式可能会扩展,那么值得研究 YAML,您的示例恰好是有效的 YAML 标记。例如,您可以使用Symfony YAML 组件
use Symfony\Component\Yaml\Yaml;
$array = Yaml::parse('/path/to/file.yml');
它适用于您当前的格式,如果您决定添加嵌套数组或其他重要数据,只需使用非常直观的 YAML 语法。这里是对格式的介绍: http: //symfony.com/doc/2.0/components/yaml/yaml_format.html