2012-03-09 54 views
2

你可以把这个字符串:PHP - 从分隔字符串使多维关联数组

"package.deal.category" 

到像这样的数组:

$array['package']['deal']['category'] 

在这一点上的索引中的值可以做任何事情。

+1

你的问题是有点混乱。 '$ array ['package'] ['deal'] ['category']'应该是什么值?你已经定义了一个索引来访问,但不是一个值。 – 2012-03-09 00:38:57

+0

编辑该问题。抱歉。我更关心的是数组本身,而不是最底层的索引。 – JayNCoke 2012-03-09 00:44:50

回答

7

What have you tried?对此的绝对答案非常简单:

$keys = explode('.', $string); 
$array = array(); 
$arr = &$array; 
foreach ($keys as $key) { 
    $arr[$key] = array(); 
    $arr = &$arr[$key]; 
} 
unset($arr); 

......但为什么这对你有用?

+0

谢谢,@tandu!我承认,如果我花时间看问题的话,我可能可以解决这个问题。除非我绝对需要,否则我几乎不会在这里提问。看完你的解决方案之后,我有一个“当然是这样”的时刻。这有一个用处,但我相信这是一个完全不同的讨论。 – JayNCoke 2012-03-09 01:14:56

1

我不太明白,这是什么问题?

$parts = explode('.', $string); 
$array = array(); 

while (!empty($parts)) { 
    $array = array(array_pop($parts) => $array); 
} 
0

试试这个:

$text = 'package.deal.category'; 

$array = array(); 
foreach(array_reverse(explode('.', $text)) as $key) $array = array($key => $array); 

print_r($array);