0

このように、リストを取得する簡単な方法を考え出そうとしています

foo: Alpha
bar: Bravo
fooBar: Charlie

そして、これを連想配列に変換して、値が

$array['foo'] //would contain Alpha
$array['bar'] //would contain Bravo

これを達成する最もクリーンな方法は何ですか?

4

4 に答える 4

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);.

于 2013-02-26T10:23:26.427 に答える
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"
}
于 2013-02-26T10:26:05.753 に答える
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

于 2013-02-26T10:41:19.167 に答える
0

これを試してください: $array = array();

$str    = 'foo: Alpha';
$res    = explode(":",$str);
$array[$res[0]] = $res[0];
于 2013-02-26T10:21:52.437 に答える