対処:
<?php
$arr = array('foo.bar.baz' => 1, 'qux' => 1);
function array_dotkey(array $arr)
{
// Loop through each key/value pairs.
foreach ($arr as $key => $value)
{
if (strpos($key, '.') !== FALSE)
{
// Reference to the array.
$tmparr =& $arr;
// Split the key by "." and loop through each value.
foreach (explode('.', $key) as $tmpkey)
{
// Add it to the array.
$tmparr[$tmpkey] = array();
// So that we can recursively continue adding values, change $tmparr to a reference of the most recent key we've added.
$tmparr =& $tmparr[$tmpkey];
}
// Set the value.
$tmparr = $value;
// Remove the key that contains "." characters now that we've added the multi-dimensional version.
unset($arr[$key]);
}
}
return $arr;
}
$arr = array_dotkey($arr);
print_r($arr);
の
出力:
Array
(
[qux] => 1
[foo] => Array
(
[bar] => Array
(
[baz] => 1
)
)
)
+1私はそれを把握することができませんでした:) – AlienWebguy
ニース。それを関数に入れることはできますか? array_dotkey($ value、&$ tmparr){...} –
のようなもの@Kristoffer Bohmann - もちろん可能ですが、配列を受け入れる関数の作成をお勧めします。私は答えを更新します。 –