【发布时间】:2015-09-24 11:08:14
【问题描述】:
我有一个这样的多维数组:
$sidebar_booking = array(
'booking' => array(
'levels' => array('1'),
'title' => 'Booking',
'icon' => 'fa-calendar',
'sub' => array(
'rates-availability' => array(
'levels' => array('1'),
'title' => 'Tariffe e Disponibilità',
'sub' => array(
'booking-overview' => array(
'levels' => array('1'),
'title' => 'Panoramica',
'url' => home('/ctrl/booking/overview/'),
),
'booking-setup' => array(
'levels' => array('1'),
'title' => 'Setup Camere / Tariffe',
'url' => home('/ctrl/booking/setup/'),
),
'booking-prices' => array(
'levels' => array('1'),
'title' => 'Modifica Prezzi',
'url' => home('/ctrl/booking/prices/'),
),
'booking-availability' => array(
'levels' => array('1'),
'title' => 'Modifica Prezzi',
'url' => home('/ctrl/booking/prices/'),
),
'booking-openclose' => array(
'levels' => array('1'),
'title' => 'Apri / Chiudi Camere',
'url' => home('/ctrl/booking/openclose/'),
),
'booking-restrictions' => array(
'levels' => array('1'),
'title' => 'Restrizioni',
'url' => home('/ctrl/booking/restrictions/'),
),
'booking-rates' => array(
'levels' => array('1'),
'title' => 'Tariffe',
),
),
),
'booking-promo' => array(
'levels' => array('1'),
'title' => 'Promozioni',
'url' => home('/ctrl/booking/promo/'),
),
'booking-reservations' => array(
'levels' => array('1'),
'title' => 'Prenotazioni',
'url' => home('/ctrl/booking/reservations/'),
),
)
),
);
我可以使用递归函数搜索特定键的存在:
function array_key_exists_r($needle, $haystack){
$result = array_key_exists($needle, $haystack);
if ($result) return $result;
foreach ($haystack as $v) {
if (is_array($v)) {
$result = array_key_exists_r($needle, $v);
}
if ($result) return $result;
}
return $result;
};
到目前为止一切顺利。
现在,找到特定键后如何检索 value?即,像这样的函数:
retrieve_value_of('booking-setup', $sidebar_booking);
应该返回数组:
array(
'levels' => array('1'),
'title' => 'Setup Camere / Tariffe',
'url' => home('/ctrl/booking/setup/'),
)
提前致谢
【问题讨论】:
标签: php multidimensional-array