2014-12-07 3 views
-1

간단히 말해서, 배열을 변경하지 않고 배열 하나에 다차원 배열을 만드는 방법은 도움이 필요합니까? 이러한에서다차원 배열을 하나의 배열로 줄임

:이 속으로

Array 
    (
     [0] => Array 
      (
       [554] => a 
      ) 

     [1] => Array 
      (
       [561] => b 
      ) 

     [2] => Array 
      (
       [574] => c 
      ) 

    ) 

:

Array 
(
    [554] => a 
    [561] => b 
    [574] => c 
) 
+0

Welcome ~에. 당신은 당신의 도전이 무엇인지를 설명 할 수 있습니까? 지금 당장 귀하의 질문은 아직 좋은 형식이 아닙니다. 도움이 필요하면 좋은 형식을 갖는 것이 중요합니다. 필요한 경우, 많은 상향 회선이있는 몇 가지 질문을 검색하십시오. 더 나은 질문을 작성하는 법을 배울 수 있습니다. :) – jazzurro

+0

죄송합니다, 나는이 질문을 유용하지 않다면 어떻게 삭제할 수 있을지 제대로 물어볼 줄 알았습니까? – drup4l

답변

-1

이 당신을 위해 작동합니다 :

$array = array(
      array(554 => "a"), 
      array(561 => "b"), 
      array(574 => "c") 
     ); 


function getL2Keys($array) { 
    foreach($array as $sub) 
     $result[] = array_keys($sub); 

    return call_user_func_array('array_merge', array_values($result)); 
} 

$array = array_combine(getL2Keys($array), call_user_func_array('array_merge', array_values($array))); 
print_r($array); 

출력 :

Array 
(
    [554] => a 
    [561] => b 
    [574] => c 
) 
+0

그것은 작동합니다, 나는 array_reduce, 고마워, 사용해야한다고 생각. – drup4l

+0

@ drup4l 환영합니다! 좋은 하루 되세요 : D – Rizier123

0

나는이 같은 문제를 array_walk_recursive를 사용하려면 :

function flatten($array) 
{ 
    $temp=array(); 
    array_walk_recursive($array, function($item, $key) use (&$temp) { 
     $temp[$key]=$item; 
    }); 

    return $temp; 
} 

$a = array(
    array(
     564=>'a', 
    ), 
    array(
     561=>'b', 
     array(
      562=>'d', 
      array(
       563=>'e', 
      ), 
     ), 
    ), 
    array(
     574=>'c', 
    ), 
); 

$b = flatten($a); 
print_r($b); 

이 내 출력 :

Array 
(
    [564] => a 
    [561] => b 
    [562] => d 
    [563] => e 
    [574] => c 
) 
+0

이 하나도 내 경우에는, 고마워. – drup4l

0

난 그냥 다른 모든 현재 답변이 너무 굉장히 overcomplicated 때문에,이를 게시해야합니다 :

$result = array_reduce($array, function ($result, $array) { return $result + $array; }, array()); 

그게 전부입니다.

+0

어쩌면 당신은 먼저 질문을 읽을 것입니다 : D 당신의 대답에서 열쇠는 길을 잃습니다! – Rizier123

+0

Dammnit, 숫자 키로'array_merge'의 어리 석음을 잊어 버렸습니다 ... – deceze

+0

그럼, 더 나은 해결책을 찾아 보겠습니다. 배열 위에'+'연산자를 반복하면된다. – deceze

0

나는 당신을 도울 수 있고, 잘못 생각하지 말고 해결책을 묻기 전에 조금 더 조사해야한다. 나는 www.php.net, http://php.net/manual/en/book.array.php 그리고 배열 문서를 검색하면 배열을 통해 루프하는 방법을 찾고 있다고 말하면서 실제로 "foreach"문을 찾고 있습니다. 나중에 함수로 변환 할 수있는 간단한 솔루션을 만들었습니다.

<?php 

$original = array 
    (
     0 => array(554 => 'a'), 
     1 => array(561 => 'b'), 
     2 => array(574 => 'c'), 
     ); 


/*$result = Array 
(
    [554] => a 
    [561] => b 
    [574] => c 
);*/ 

$result = array(); 


foreach ($original as $sub_array) { 

    //this help us read first level array 
    foreach ($sub_array as $subArrayKey=>$subArray) { 
     // this help us read second level array 
     $result[$subArrayKey] = $subArray; 

    } 
} 

echo '<pre>'; 
print_r($result); 
echo '</pre>'; 

?> 
관련 문제