我有一个数组。
Array
(
[0] => 1_4
[1] => 1_1
[2] => 1_2
[3] => 2_3
[4] => 2_5
)
我想将其转换为
Array
(
[1] => Array (4,1,2)
[2] => Array (3,5)
)
任何人都能帮助我吗?新键(1和2)是_
之前数组第1部分的不同值。
答案 0 :(得分:1)
又快又脏......
foreach($array as $value){ // Loop your current array
$arr = substr($value,0); // Get the character before _, 1 or 2
$val = substr($value,2); // Get character after _, 1,2,3,4 or 5
if($arr == 1){ // if 1_, put into first new array
$newArray[0][] = $val;
}else{
$newArray[1][] = $val; // Put into second array else
}
}
print_r($newArray);
答案 1 :(得分:1)
如果下划线始终是唯一的分割,则可以在下划线上爆炸并将结果附加到新数组。
$before = ['1_4','1_1','1_2','2_3','2_5'];
$after = [];
foreach ($before as $entry) {
$index = explode('_',$entry);
$after[$index[0]][] = $index[1];
}
return $after;
答案 2 :(得分:0)
也许尝试这样的事情?
foreach ($array as $element( {
$kv_pair = explode("_", $element, 2);
if (array_key_exists($kv_pair[0])) {
array_push($new_array[$kv_pair[0]], $kv_pair[1]);
} else {
$new_array[$kv_pair[0]] = [$kv_pair[1]];
}
}