PHP:Create key=>;带冒号字符串的值对

PHP:Create key=>;带冒号字符串的值对,php,arrays,Php,Arrays,我有以下问题:我发出一个cURL请求并得到如下响应(没有json): 为了能够处理该数据,我创建了一个数组: $result = preg_split("/\\r\\n|\\r|\\n/", $result); 现在我有了一个包含以下项目的数组: array( "100", "123456", "Foo: Bar", "Foo1: Bar1", "Foo2: Bar2" ) 我的问题是:是否有一种很好的方法来创建一个包含key=>value对的数组,因

我有以下问题:我发出一个cURL请求并得到如下响应(没有json):

为了能够处理该数据,我创建了一个数组:

$result = preg_split("/\\r\\n|\\r|\\n/", $result);
现在我有了一个包含以下项目的数组:

array(
    "100",
    "123456",
    "Foo: Bar",
    "Foo1: Bar1",
    "Foo2: Bar2"
)
我的问题是:是否有一种很好的方法来创建一个包含key=>value对的数组,因此冒号前的字符串是键,冒号后的字符串是值?前两个项从来没有冒号,所以我需要分别为它们添加一个键,并且冒号之前的字符串从来都不相同,因此不可能多次使用同一个键。还有,要么只有一个冒号,要么没有冒号


提前谢谢

此代码假定没有重复的键。如果存在,则后一个将覆盖前一个。没有冒号的条目将使用键0、1、2等

$data = array(
    "100",
    "123456",
    "Foo: Bar",
    "Foo1: Bar1",
    "Foo2: Bar2"
);

$o = array_reduce($data, function($carry, $m){
    //echo $m . "\n";
    $e = explode(':', $m, 2);

    if ( count($e) == 1 ) {
        $carry[] = trim($e[0]);
    } else {
        $carry[$e[0]] = trim($e[1]);
    }
    return $carry;
}, []);

print_r($o);
产出:

Array
(
    [0] => 100
    [1] => 123456
    [Foo] =>  Bar
    [Foo1] =>  Bar1
    [Foo2] =>  Bar2
)

此代码假定没有重复的键。如果存在,则后一个将覆盖前一个。没有冒号的条目将使用键0、1、2等

$data = array(
    "100",
    "123456",
    "Foo: Bar",
    "Foo1: Bar1",
    "Foo2: Bar2"
);

$o = array_reduce($data, function($carry, $m){
    //echo $m . "\n";
    $e = explode(':', $m, 2);

    if ( count($e) == 1 ) {
        $carry[] = trim($e[0]);
    } else {
        $carry[$e[0]] = trim($e[1]);
    }
    return $carry;
}, []);

print_r($o);
产出:

Array
(
    [0] => 100
    [1] => 123456
    [Foo] =>  Bar
    [Foo1] =>  Bar1
    [Foo2] =>  Bar2
)

你能举例说明结果会是什么样子吗?如果一个键被多次定义,会发生什么?如果字符串有零个或多个冒号怎么办?示例中的某些项没有冒号。对不起,我忘了提到冒号之前的字符串从来都不相同,并且总是只有一个或没有冒号。与问题相关的信息应该添加到问题本身。不要发表评论。改为编辑问题。你能举例说明结果是什么样的吗?如果一个键被多次定义,会发生什么?如果字符串有零个或多个冒号怎么办?示例中的某些项没有冒号。对不起,我忘了提到冒号之前的字符串从来都不相同,并且总是只有一个或没有冒号。与问题相关的信息应该添加到问题本身。不要发表评论。改为编辑问题。