このように、リストを取得する簡単な方法を考え出そうとしています
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"
}
これはやり過ぎかもしれませんが、ファイル形式が拡張される可能性がある場合は、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
これを試してください: $array = array();
$str = 'foo: Alpha';
$res = explode(":",$str);
$array[$res[0]] = $res[0];