PHP:字符串分割数组多维数组
问题描述:
我的时区的数组:PHP:字符串分割数组多维数组
$timezones = array(
'Africa/Abidjan',
'Africa/Accra',
...
'America/Argentina/Buenos_Aires',
'America/Argentina/Catamarca',
...
'Pacific/Wallis',
'UTC',
);
我怎样才能最简单的分割该阵列,使我得到一个这样的:
$timezones = array(
'Africa' => array('Abidjan', 'Accra', ...),
'America' => array(..., 'Argentina' => array('Buenos_Aires', 'Catamarca', ...), ...),
...
'Pacific' => array(..., 'Wallis'),
'UTC',
);
答
$splitted = array();
foreach ($timezones as $timezone)
{
$items = explode('/', $timezone);
add_to_array($splitted, $items);
}
print_r($splitted);
function add_to_array(& $destination, $values)
{
if (count($values) == 1)
{
$destination[] = $values[0];
}
else
{
$first = array_shift($values);
add_to_array($destination[$first], $values);
}
}
使用
eval()
答
非递归的hackish版本:
$output = array();
foreach ($timezones as $zone) {
if (strpos($zone, '/') !== FALSE) {
$str = preg_replace('#/([^/]+)$#', "'][] = '$1';", $zone);
$str = str_replace('/', "']['", $str);
$str = '$output[\''.$str;
eval($str);
} else {
$output[$zone] = '';
}
}
print_r($output);
这是'str_replace('a','i','eval');';) – Gordon 2010-06-21 11:33:42
有更多的方法......哦,等等,它只是为了好玩:) – 2010-06-21 12:07:36