PHP - 从分隔的字符串创建多维关联数组

时间:2012-03-09 00:31:10

标签: php arrays multidimensional-array

你可以转动这个字符串:

"package.deal.category"

进入这样的数组:

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

此时索引内的值可以是任何值。

4 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:1)

我真的不明白,问题是什么?

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

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

答案 2 :(得分:0)

试试这个:

$text = 'package.deal.category';

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

print_r($array);

答案 3 :(得分:0)

我知道这个问题是在一段时间之前提出的,但是对于任何其他寻求不涉及循环的可能答案的人,请尝试使用JSON。

要使$ array ['key1'] ['key2'] = $ value

$key = 'Key1.Key2';
$delimiter = '.';
$value = 'Can be a string or an array.';

$jsonkey = '{"'.str_replace($delimiter, '":{"', $key).'":';
$jsonend = str_repeat('}', substr_count($jsonkey, '{'));
$jsonvalue = json_encode($value);
$array = json_decode($jsonkey.$jsonvalue.$jsonend, true);