php - Array to multidimensional array ... based on foo.bar.baz-dots in array key name -



php - Array to multidimensional array ... based on foo.bar.baz-dots in array key name -

i have array "foo.bar.baz" key names in array. there handy way turn array multidimensional array (using each "dot level" key next array)?

actual output: array([foo.bar.baz] => 1, [qux] => 1) desired output: array([foo][bar][baz] => 1, [qux] => 1)

code example:

$arr = array("foo.bar.baz" => 1, "qux" => 1); print_r($arr);

solution:

<?php $arr = array('foo.bar.baz' => 1, 'qux' => 1); function array_dotkey(array $arr) { // loop through each key/value pairs. foreach ( $arr $key => $value ) { if ( strpos($key, '.') !== false ) { // reference array. $tmparr =& $arr; // split key "." , loop through each value. foreach ( explode('.', $key) $tmpkey ) { // add together array. $tmparr[$tmpkey] = array(); // can recursively go on adding values, alter $tmparr reference of recent key we've added. $tmparr =& $tmparr[$tmpkey]; } // set value. $tmparr = $value; // remove key contains "." characters we've added multi-dimensional version. unset($arr[$key]); } } homecoming $arr; } $arr = array_dotkey($arr); print_r($arr);

outputs:

array ( [qux] => 1 [foo] => array ( [bar] => array ( [baz] => 1 ) ) )

php recursion multidimensional-array

Comments

Popular posts from this blog

iphone - Dismissing a UIAlertView -

intellij idea - Update external libraries with intelij and java -

javascript - send data from a new window to previous window in php -