문제

I need to change a two-dimensional array to a three-dimensional array irrespective of the lengths of the array:

I have the following:

array(89) { 
    [0]=> array(5) { [0]=>"aaa" [1]=>"bbb"[2]=>"ccc" [3]=>"ddd" [4]=>"eee" } 
    [1]=> array(5) { [0]=>"blablabla" [1]=>"blablabla" [2]=>"blablabla" [3]=>"blablabla" [4]=>"blablabla" }
    [2]=> array(5) { [0]=>"aaa" [1]=>"bbb"[2]=>"ccc" [3]=>"ddd" [4]=>"eee" } 
    [3]=> array(5) { [0]=>"blablabla" [1]=>"blablabla" [2]=>"blablabla" [3]=>"blablabla" [4]=>"blablabla" }
    [4]=> array(5) { [0]=>"blablabla" [1]=>"blablabla" [2]=>"blablabla" [3]=>"blablabla" [4]=>"blablabla" }
...}

I need

array (?) {   
    [0]=> array(2) { 
        [0]=> array(5) { [0]=>"aaa" [1]=>"bbb"[2]=>"ccc" [3]=>"ddd" [4]=>"eee" }   
        [1]=> array(5) { [0]=>"blablabla" [1]=>"blablabla" [2]=>"blablabla" [3]=>"blablabla" [4]=>"blablabla" }}
    [1]=> array(3) { 
        [0]=> array(5) { [0]=>"aaa" [1]=>"bbb"[2]=>"ccc" [3]=>"ddd" [4]=>"eee" }  
        [1]=> array(5) { [0]=>"blablabla" [1]=>"blablabla" [2]=>"blablabla" [3]=>"blablabla" [4]=>"blablabla" }
        [2]=> array(5) { [0]=>"blablabla" [1]=>"blablabla" [2]=>"blablabla" [3]=>"blablabla" [4]=>"blablabla" }}
    ...}

'blablabla' can be any length and format, but 'aaa', 'bbb', ... is the same in all arrays. need to array begins with 'aaa'

도움이 되었습니까?

해결책

This is quite simple actually, all you need is one foreach():

$i=-1; //this will increment on first loop so we set it to -1
$key_to_find = $array[0][0]; //storing the 'aaa' value
$result = array();       
foreach($array as $key=>$val){
    //checking if 'aaa' equals to the first value, if yes increment $i to 0
    ($val[0]==$key_to_find)?$i++:'';
    //save the whole array bunch
    $result[$i][] = $val;
}

print_r($result);

DEMO

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top