我有以下问题:我发出cURL请求并得到这样的响应(没有json):
100
123456
Foo: Bar
Foo1: Bar1
Foo2: Bar2
为了能够处理这些数据,我创建了一个数组:
$result = preg_split("/\\r\\n|\\r|\\n/", $result);
现在我有一个包含这些项目的数组:
array(
"100",
"123456",
"Foo: Bar",
"Foo1: Bar1",
"Foo2: Bar2"
)
我的问题是:使用key =>创建数组有一个很好的方法吗?值对,所以冒号前面的字符串是键,冒号后的字符串是值?前两个项目永远不会有冒号,所以我需要分别为它们添加一个键,并且冒号之前的字符串永远不会相同,因此不可能多次存在相同的键。此外,还有一个或没有冒号。
提前致谢!
答案 0 :(得分:2)
此代码假定没有密钥是重复的。如果有,后者会覆盖之前的。没有冒号的条目将使用键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
)