2014-12-09 5 views
-1

다차원 배열 :이 같은 배열이 변환

[0] => white house history 
[1] => white house historical association 
[2] => white house hotel istanbul 
[3] => white house high school 
[4] => white kilt hose 
[5] => white knight hose 
[6] => white house kennels 
[7] => white house kin sale 
[8] => white house news 
[9] => white house nannies 
[10] => white house number 
[11] => white house nominations 

누군가가이 작업을 수행하는 방법을 알고 있나요 : 나는 각 배열 내부에서 요소 만 포함 된 새 배열을 만들려면

Array 
(
    [0] => Array 
     (
      [0] => element 1 
      [1] => Array 
       (
        [0] => white house history 
        [1] => white house historical association 
        [2] => white house hotel istanbul 
        [3] => white house high school 
       ) 

     ) 

    [1] => Array 
     (
      [0] => element 2 
      [1] => Array 
       (
        [0] => white kilt hose 
        [1] => white knight hose 
        [2] => white house kennels 
        [3] => white house kinsale 
       ) 

     ) 

    [2] => Array 
     (
      [0] => element 3 
      [1] => Array 
       (
        [0] => white house news 
        [1] => white house nannies 
        [2] => white house number 
        [3] => white house nominations 

       ) 

     ) 

을 ?

+0

이것은 간단한 문제처럼 보입니다. 아직 아무것도 시도하지 않았습니까? – mdnghtblue

답변

0
<?php 
$names = array(); 
foreach ($arr as $k => $v) { 
    if (! empty($v[1])) { 
     foreach ($v[1] as $elem) { 
      $names[] = $elem; 
     } 
    } 
} 
?> 

설명 :

당신은 모든 배열의 두 번째 부분에있는 모든 요소가 필요합니다.

메인 어레이를 루프합니다.

하위 배열의 두 번째 부분으로 이동하십시오. 원하는 이름입니다.

그냥 공백 (필수) 배열에 추가하면 결과가 출력됩니다.

Please see demo

0

일반적으로 나는 그것을 먼저 시도해 보시기 바랍니다 싶지만, 교육의 이익, 여기에 몇 가지 주석 코드입니다 :

$newArray = []; // use array() for PHP before 5.4, I think 
foreach($oldArray as $subArray) { // process top-level elements 
    bool $firstElement = true; // flag to indicate if we've gone past 1 element yet 
    foreach($subArray as $element) { // process second-level elements 
     if(!firstElement && is_array($element)) { // look for arrays that come after first element 
      $newArray = array_merge($newArray, $element); 
     } 
     $firstElement = false; // unset the flag 
    } 
} 

편집 : 요구 사항이 명확히 한 후, 중첩하여 구현은 루프 및 $ firstElement 플래그

+0

다른 솔루션은 모든 값이 정확히 2 레벨 깊이라고 가정합니다. 얼마나 많은 레벨이 중첩되어 있어도 값을 원한다고 생각했습니다. – RobP

+0

단순히 모든 요소를 ​​수집하지 않습니까? 그러나 OP는 레벨 2에서 값을 제외하려고합니다. –

+0

잭, 모든 요소 (리프 노드)를 모으는 내가 읽는 방식은 정확히 OP가 원했던 것입니다. – RobP