2013-10-17 4 views
0

두 가지 인수를 모두 사용할 수있는 함수가 있어야합니다. 둘 다 배열입니다. 첫 번째 배열은 다양한 길이의 1 차원 배열이고 두 번째 배열은 두 번째 인수입니다. 다양한 깊이와 길이의 다차원 배열입니다. 첫 번째 배열은 연관성이 없으며 두 번째 배열은 항상 완전 연관 배열입니다.다른 일차원 배열을 사용하여 다차원 배열 데이터를 가져 오는 방법

이 함수는 첫 번째 배열에 표시된대로 다차원 배열에서 요청 된 값을 반환합니다.

첫 번째 배열은 항상 손으로 작성되어이 함수에 전달된다고 가정하십시오. 개발자는 다차원 배열에서 반환 할 값이 있다는 것을 항상 알고 있으며 값이 존재하지 않는 함수에 요청을 전달하지 않습니다.

다음 코드는 내가 달성하려고 시도하는 것의 가장 좋은 예라고 생각합니다.

//Example multi-dimensional array 
$multi = array(
     'fruit' => array(
         'red' => array(
            'strawberries' => '$2.99/lb', 
            'apples' => '$1.99/lb' 
            ), 
         'green' => array(
            'honeydew' => '$3.39/lb', 
            'limes' => '$0.75/lb' 
            ) 
        ), 
     'vegetables' => array(
         'yellow' => array(
            'squash' => '$1.29/lb', 
            'bellpepper' => '$0.99/lb' 
            ), 
         'purple' => array(
            'eggplant' => '$2.39/lb' 
            ) 
        ), 
     'weeklypromo' => '15% off', 
     'subscribers' => array(
          '[email protected]' => 'User 1', 
          '[email protected]' => 'User 2', 
          '[email protected]' => 'User 3', 
          '[email protected]' => 'User 4' 
          ) 
     ); 

//Example one-dimensional array 
$single = array('fruit', 'red', 'apples'); 

function magicfunc($single, $multi) { 
    //some magic here that looks something like below 
    $magic_value = $multi[$single[0]][$single[1]][$single[2]]; 
    return $magic_value; 
} 

//Examples: 

print magicfunc(array('fruit', 'red', 'apples'), $multi); 
Output: 
$1.99/lb 

print magicfunc(array('subscribers', '[email protected]'), $multi); 
Output: 
User 3 

print magicfunc(array('weeklypromo'), $multi); 
Output: 
15% off 

답변

1

이 요청에 따라 값을 반환

function magicfunc($single, $multi) { 
    while (true) { 
     if (!$single) { 
      break; 
     } 
     $searchIndex = array_shift($single); 

     foreach ($multi as $k => $val) { 
      if ($k == $searchIndex) { 
       $multi = $val; 
       continue 2; 
      } 
     } 
    } 
    return $multi; 
} 
관련 문제