我試圖找出一個簡單的方法來接受列表,這樣線和冒號分隔列表陣列PHP
foo: Alpha
bar: Bravo
fooBar: Charlie
將它轉化爲一個關聯數組這使值將
$array['foo'] //would contain Alpha
$array['bar'] //would contain Bravo
等
什麼是最簡單的方法來實現這一點?
我試圖找出一個簡單的方法來接受列表,這樣線和冒號分隔列表陣列PHP
foo: Alpha
bar: Bravo
fooBar: Charlie
將它轉化爲一個關聯數組這使值將
$array['foo'] //would contain Alpha
$array['bar'] //would contain Bravo
等
什麼是最簡單的方法來實現這一點?
像這樣的事情?:
$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"
}
謝謝,這個伎倆,但必須先檢查值,所以我沒有得到一個數組返回作爲空白的最後一個值。 if(strpos($ line,':')!== false) – chip 2013-02-26 12:01:23
試試這個: $ array = array();
$str = 'foo: Alpha';
$res = explode(":",$str);
$array[$res[0]] = $res[0];
你可以做手工,如果你的第一個列表已經處於一個數組:
$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);
。
for ???那會工作嗎? – 2013-02-26 10:24:10
你是對的,這是一個錯字。最近在Python中編碼過多;)。 – Wookai 2013-02-26 10:25:35
反正我從我+1:D – 2013-02-26 10:26:19
也許這是矯枉過正,但如果你的文件格式有可能擴大,這是值得研究的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
[parse_ini_string(http://php.net/manual/en/function.parse-ini-string.php) – raina77ow 2013-02-26 10:22:40
你有一個像'富的字符串:阿爾法\ nbar:Bravo \ nfooBar:Charlie或者像[[「foo:Alpha」,「bar:Bravo」]]這樣的數組,或者列表是一個DOM元素,比如table或者ul或者......? – Nenotlep 2013-02-26 10:22:48