2017-11-30 21 views
0

다음 입력 배열이 있습니다. 배열을 평면화하여 true 또는 false 조건을 평가하고 싶습니다.PHP 다차원 배열 병합

array (
'all' => 
    array (
     '0' => 
     array (
      0 => 'true') 
     '1' => 
     array (
      0 => 'true')  
     '2' => 
      array (
      0 => 'true') 
     ), 
    array (
     'any' => 
      array (
       '0' => 
        array (
         0 => 'true') 
       '1' => 
        array (
          0 => 'false') 
)) 

)

나는 다음과 같은 형식의 출력을 얻을 싶습니다.

출력 배열 :

all =>(
    true, 
    true, 
    true, 
    any => (true, 
      false) 
) 
+2

당신이 거의 항상 당신이 작업을 잘못된 방향으로 접근하고 있다는 사실을 지적 할 필요 이런 종류의 끝낼 때 나는 생각한다. –

+0

브라이언, 당신이 옳을 수도 있습니다. json 형식의 비즈니스 규칙을 true 또는 false로 평가하려고합니다. "all"은 "and"조건을 나타냅니다. "모든"은 "또는"조건을 나타냅니다. 나는 당신이 다른 접근법을 제안한다면 기꺼이 알게 될 것입니다. – subra

답변

0

이 문제를 밖으로 정렬 할 수 기능을 내장 많은 ​​PHP있다. 아래와 같이)을

$result = array_values($array, 'type'); 

을 그리고 당신은 PHP 5.5 이상을 사용하는 경우, 당신은 array_column을 (사용할 수 있습니다 :

아래처럼array_values을 사용할 수 있습니다

$result = array_column($array, 'type'); 

당신이 할 수있는 더 낮은 PHP 버전의 경우 array_flatten 또는 array_map을 사용해보십시오. array_values

예 :

<?php 

$aNonFlat = array(
    1, 
    2, 
    array(
     3, 
     4, 
     5, 
     array(
      6, 
      7 
     ), 
     8, 
     9, 
    ), 
    10, 
    11 
); 

$objTmp = (object) array('aFlat' => array()); 

array_walk_recursive($aNonFlat, create_function('&$v, $k, &$t', '$t->aFlat[] = $v;'), $objTmp); 

var_dump($objTmp->aFlat); 

/* 
array(11) { 
    [0]=> int(1) 
    [1]=> int(2) 
    [2]=> int(3) 
    [3]=> int(4) 
    [4]=> int(5) 
    [5]=> int(6) 
    [6]=> int(7) 
    [7]=> int(8) 
    [8]=> int(9) 
    [9]=> int(10) 
    [10]=> int(11) 
} 
*/ 

?> 
+0

감사합니다. PHP 5.4 버전을 사용하고 있습니다. 배열이 완전히 평평 해지기를 원하지 않습니다. 나는 그것을 평평하게 만들기 위해, "모든"또는 "모든"키 아래에 그룹화 된 참 또는 거짓 값을 가지고 있습니다. – subra