2017-11-29 3 views
0

재귀 람다 함수를 사용하여 배열 unflatten 시도하고 있지만 주위에 내 머리를 얻을 수 없습니다.재귀 람다 함수를 사용하여 간단한 배열 unflattening

그건 코드이지만 "여기에 누락 된 논리"에서 무엇을해야할지 모르겠다. 부품.

나는이 재귀 람다 함수는

[0, 1, 2] 

로 변환하고 싶습니다 : 당신은 2 인자가 필요하지 않습니다

Array 
(
    [0] => Array 
     (
      [1] => Array 
       (
        [2] => test 
       ) 
     ) 
) 
+2

당신에게 '예'가 있어야 해. 정확히 "// 여기에 누락 된 논리"가 무엇을해야 하는지를 분명하게 밝혀야합니다. "test"가 어디에도 지정되어 있지 않으면'[0, 1, 2]'에서'[0 => [1 => [2 => 'test']]]'로의 명백한 경로는 없습니다. – cHao

답변

1

$test = function($a) use (&$test) { 
    // the leaf element 
    if (! count($a)) return 'test'; 
    $c = array_shift($a); 
    return [$c => $test($a)]; 
}; 

$newArr = $test([0, 1, 2]); 

demo

+1

'count'와'$ c'도 필요 없다고 생각합니다 :'return $ a? [array_shift ($ a) => $ test ($ a)] : 'test'; ' –

+1

네, 맞습니다. 그러나 OP의 코드가 거의 작동하면 대개 최대한 많이 저장합니다. – splash58

+1

그건 의미가 있습니다. 그래도 반드시 대답을 바꾸어야한다고 제안하는 것은 아니 었습니다. 그냥 코멘트. –