2014-01-23 3 views
1

두 개의 여기에 두 개가 있습니다 multi-dimensional arrays.PHP - 두 개의 다차원 배열을 비교하는 값 찾기

$ a 배열 덕분에 $ b 배열에서 image_to_get 값을 얻으려면 어떻게해야합니까?

$a = array(
    'thumbs' => array(
     '0' => array(
      'thumb1a' => array(
       '0' => array(
        'thumb1' => "" 
       ) 
      ) 
     ) 
    ) 
); 

$b = array(
    'thumbs' => array(
     '0' => array(
      'thumb1a' => array(
       '0' => array(
        'thumb1' => "image_to_get" 
       ) 
      ), 
      'thumb2' => 'image2', 
      'thumb3' => 'image3', 
      'thumb4' => 'image4', 
      'thumb5' => 'image5', 
     ) 
    ) 
); 
+0

이 알려진 깊이에 항상, 또는 중첩의 모든 수준을 처리해야합니까? – Barmar

+0

아니 항상 알려진 깊이에있어. – user2915478

+0

http://stackoverflow.com/questions/19299137/php-multidimensional-array-getting-values이 질문을 확인할 수 있습니까? 너와 관련된 것 같아. – FreshPro

답변

0

당신이 시도 할 수 있습니다 : getAPath가로 $a 배열을 flatterns

function getAPath($array) { 
    if (empty($array)) { 
     return array(); 
    } 
    $key = key($array); 

    return array_merge(array($key), getAPath($array[$key])); 
} 
function getBValue($array, $path) { 
    $key = array_shift($path); 

    if (is_null($key) || empty($array)) { 
     return $array; 
    } 

    return getBValue($array[$key], $path); 
} 

$aPath = getAPath($a); 
$bValue = getBValue($b, $aPath); 
var_dump($bValue); 

첫 번째 기능 :

array (size=5) 
    0 => string 'thumbs' (length=6) 
    1 => int 0 
    2 => string 'thumb1a' (length=7) 
    3 => int 0 
    4 => string 'thumb1' (length=6) 

두 번째 기능 getBValue$aPath를 사용하여 $b 배열을 통해 안내합니다. 다음은

멋진 한 라이너 ;-)

function getAPath($array) { 
    return empty($array) ? array() : array_merge(array($key = key($array)), getAPath($array[$key])); 
} 
function getBValue($array, $path) { 
    return (is_null($key = array_shift($path)) || empty($array)) ? $array : getBValue($array[$key], $path); 
} 
관련 문제