Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将数组中的两项列表分解为键=>;价值_Php_Arrays_Explode - Fatal编程技术网

Php 将数组中的两项列表分解为键=>;价值

Php 将数组中的两项列表分解为键=>;价值,php,arrays,explode,Php,Arrays,Explode,我想爆炸一个像这样的多行字符串 color:red material:metal $array['color']=red $array['material']=metal 这样的数组 color:red material:metal $array['color']=red $array['material']=metal 有什么想法吗?使用,您可以使用regexp,但它非常简单,没有开销 $data = array(); foreach (explode("\n", $dataStrin

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

color:red
material:metal
$array['color']=red
$array['material']=metal
这样的数组

color:red
material:metal
$array['color']=red
$array['material']=metal
有什么想法吗?

使用,您可以使用regexp,但它非常简单,没有开销

$data = array();
foreach (explode("\n", $dataString) as $cLine) {
    list ($cKey, $cValue) = explode(':', $cLine, 2);
    $data[$cKey] = $cValue;
}
如注释中所述,如果数据来自Windows/DOS环境,则很可能有CRLF换行符,在
foreach()
之前添加以下行可以解决此问题

$dataString = str_replace("\r", "", $dataString); // remove possible \r characters
使用regexp的替代方案可以非常愉快,并且:


在断线时先爆炸。序言\n

然后在:上分解每个结果数组的项,并将新数组设置为该键/值。

试试这个

$value = '1|a,2|b,3|c,4|d';
$temp = explode (',',$value);
foreach ($temp as $pair) 
{
    list ($k,$v) = explode ('|',$pair);
    $pairs[$k] = $v;
}

print_r($pairs);

不要忘了至少从
$cValue
@Jon中删除可能的
“\r”
,这是非常正确的,经过修改后的regexp版本非常令人愉快。