function recursive_array_convert ($input, &$result = array()) {
$thisLevel = array_shift($input);
if (count($input)) {
if (!isset($result[$thisLevel]) || !is_array($result[$thisLevel])) {
$result[$thisLevel] = array();
}
recursive_array_convert($input, $result[$thisLevel]);
} else {
$result[$thisLevel] = NULL;
}
return $result;
}
この関数はあなたに多くの柔軟性を与える必要があります - あなたは、単に渡すことができます入力配列を最初の引数に渡し、結果を戻り値でキャッチするか、既存の変数を2番目の引数に渡して、結果でいっぱいにすることができます。
$result = recursive_array_convert(array('one', 'two', 'three', 'four'));
...か...
recursive_array_convert(array('one', 'two', 'three', 'four'), $result);
一見、このオプションでは、ほとんどのポイントが見えるかもしれませんが、考えてみます。これは、あなたがして、あなたの例で欲しいものを達成できることを意味します以下のようになります:
$result = array();
recursive_array_convert(array('one', 'two', 'three', 'four'), $result);
recursive_array_convert(array('five', 'six', 'seven', 'eight'), $result);
print_r($result);
/* Output:
Array
(
[one] => Array
(
[two] => Array
(
[three] => Array
(
[four] =>
)
)
)
[five] => Array
(
[six] => Array
(
[seven] => Array
(
[eight] =>
)
)
)
)
*/
ご覧のとおり、同じ変数に好きなだけチェーンを作成できます。
大変ありがとうございます。参考文献はまだまだ私の頭を十分に引き出すためのものです。 – Sam