我有一个如下所示的数组:
a 12 34
b 12345
c 123456
所以数组看起来像
$array[0] = "a 12 34"
$array[1] = "b 12345"
$array[2] = "c 123456"
我正在尝试创建一个关联数组,这样
[a] => 12 34
[b] => 12345
[c] => 123456
我能否将数组分成两部分,一个包含“a、b、c”,另一个包含它们的内容并使用 array_combine()?或者还有其他方法吗?
最佳答案
You can do that within a loop like the snippet below demonstrates. Quick-Test here:
$array = array("a 12 34", "b 12345", "c 123456");
$array2 = array();
foreach($array as $data){
preg_match("#([a-z])(\s)(.*)#i", $data, $matches);
list(, $key, $space, $value) = $matches;
$array2[$key] = $value;
}
var_dump($array2);
// YIELDS::
array(3) {
["a"]=> string(5) "12 34"
["b"]=> string(5) "12345"
["c"]=> string(6) "123456"
}
Or using a Blend of
array_walk()
andarray_combine()
which can be Quick-Tested Here.
<?php
$array = array("a 12 34", "b 12345", "c 123456");
$keys = array();
array_walk($array, function(&$data, $key) use (&$keys){
$keys[] = trim(preg_replace('#(\s.*)#i', '', $data));;
$data = trim(preg_replace('#(^[a-z])#i', '', $data));
});
$array = array_combine($keys, $array);
var_dump($array);;
// YIELDS::
array(3) {
["a"]=> string(5) "12 34"
["b"]=> string(5) "12345"
["c"]=> string(6) "123456"
}
关于php - 拆分数组以创建关联数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40319627/