目前,我有一个2d数组,基本上是这样的:
$oriArr = array(
[0]=>array(
'1'=>'a',
'2'=>'b',
'3-1'=>'c',
'4-1'=>'d',
'3-2'=>'c1',
'4-2'=>'d1'
),
[1]=>array(
'1'=>'a',
'2'=>'b',
'3-1'=>'c',
'4-1'=>'d',
'3-2'=>'c1',
'4-2'=>'d1',
'3-3'=>'c2',
'4-3'=>'d2'
),
);
我想通过添加一个像这样的新元素将数组拆分成3d数组:
$resArr= array(
[0]=>array(
[1]=>'a',
[2]=>'b',
['items']=>array(
[1]=>array(
'3-'=>'c',
'4-'=>'d',
),
[2]=>array(
'3-'=>'c1',
'4-'=>'d1',
)
),
),
[0]=>array(
[1]=>'a',
[2]=>'b',
['items']=>array(
[1]=>array(
'3-'=>'c',
'4-'=>'d',
),
[2]=>array(
'3-'=>'c1',
'4-'=>'d1',
),
[3]=>array(
'3-'=>'c2',
'4-'=>'d2',
)
),
),
);
我尝试用' - '拆分所有键并将它们添加到另一个数组,但我不知道如何添加一个名为'items'的新元素并将值插入其中。
foreach($oriArr as $lines){
foreach($lines as $keys){
$keyArr= array();
if (strpos($keys, '-') !== false) {
$keyArr[] = $keys;
}
}
}
有什么方法可以拆分我原来的阵列吗?任何答案都将不胜感激!
答案 0 :(得分:1)
你必须这样做: -
$final_array = array();
foreach($oriArr as $key=>$oriAr){
$items = array();
foreach($oriAr as $k=>$oriA){
$exploded_key = explode('-',$k);
if(count($exploded_key) ==2){
$items['items'][$exploded_key[1]][$exploded_key[0].'-'] = $oriA;
}else{
$items[$k]=$oriA;
}
}
$final_array[$key] = $items;
}
print_r($final_array);
输出: - https://eval.in/860368