将数组中的两项列表作为key => value进行爆炸

cuk*_*eka 8 php arrays explode

我想爆炸像这样的多行字符串

color:red
material:metal
Run Code Online (Sandbox Code Playgroud)

到这样的数组

$array['color']=red
$array['material']=metal
Run Code Online (Sandbox Code Playgroud)

任何的想法?

Orb*_*ing 16

使用explode(),你可以使用正则表达式,但它很简单,没有开销.

$data = array();
foreach (explode("\n", $dataString) as $cLine) {
    list ($cKey, $cValue) = explode(':', $cLine, 2);
    $data[$cKey] = $cValue;
}
Run Code Online (Sandbox Code Playgroud)

正如评论中所提到的,如果数据来自Windows/DOS环境,它可能具有CRLF换行符,在foreach()解决该问题之前添加以下行.

$dataString = str_replace("\r", "", $dataString); // remove possible \r characters
Run Code Online (Sandbox Code Playgroud)

使用preg_match_all()array_combine(),使用regexp的替代方法非常令人满意:

$matches = array();
preg_match_all('/^(.+?):(.+)$/m', $dataString, $matches);
$data = array_combine($matches[1], $matches[2]);
Run Code Online (Sandbox Code Playgroud)