2014-01-23 67 views
1

我在这里两个multi-dimensional arraysPHP - 查找比较两个多维数组的值

感谢$ 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

你可以尝试:

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); 

第一功能getAPath flatterns您$a数组:

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); 
}