我想做的是有一个函数接受两个参数,两个数组,第一个是不同长度的一维数组,第二个是不同深度和长度的多维数组。第一个数组从不关联,第二个始终是完全关联数组。
此函数将从多维数组返回请求的值,如第一个数组所示。
假设第一个数组总是手写并传递给这个函数。这意味着开发人员始终知道要从多维数组返回一个值,并且永远不会将请求传递给不存在值的函数。
我认为下面的代码是我想要实现的最佳示例。
//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(
'user1@email.com' => 'User 1',
'user2@email.com' => 'User 2',
'user3@email.com' => 'User 3',
'user4@email.com' => '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', 'user3@email.com'), $multi);
Output:
User 3
print magicfunc(array('weeklypromo'), $multi);
Output:
15% off