PHP:Create key=>;带冒号字符串的值对
我有以下问题:我发出一个cURL请求并得到如下响应(没有json): 为了能够处理该数据,我创建了一个数组: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对的数组,因
$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
)
你能举例说明结果会是什么样子吗?如果一个键被多次定义,会发生什么?如果字符串有零个或多个冒号怎么办?示例中的某些项没有冒号。对不起,我忘了提到冒号之前的字符串从来都不相同,并且总是只有一个或没有冒号。与问题相关的信息应该添加到问题本身。不要发表评论。改为编辑问题。你能举例说明结果是什么样的吗?如果一个键被多次定义,会发生什么?如果字符串有零个或多个冒号怎么办?示例中的某些项没有冒号。对不起,我忘了提到冒号之前的字符串从来都不相同,并且总是只有一个或没有冒号。与问题相关的信息应该添加到问题本身。不要发表评论。改为编辑问题。