views:

84

answers:

3

I need to create array like that:

Array('firstkey' => Array('secondkey' => Array('nkey' => ...)))

From this:

firstkey.secondkey.nkey.(...)
+6  A: 
$yourString = 'firstkey.secondkey.nkey';
// split the string into pieces
$pieces = explode('.', $yourString);
$result = array();
// $current is a reference to the array in which new elements should be added
$current = &$result;
foreach($pieces as $key){
   // add an empty array to the current array
   $current[ $key ] = array();
   // descend into the new array
   $current = &$current[ $key ];
}
//$result contains the array you want
Lekensteyn
Very thanks, it works.
chainerMethoder2
A: 

Try something like:

function dotToArray() {
  $result = array();
  $keys = explode(".", $str);
  while (count($keys) > 0) {
    $current = array_pop($keys);
    $result = array($current=>$result);
  }
  return $result;
}
Manrash
A: 

My take on this:

<?php

$theString = "var1.var2.var3.var4";
$theArray = explode(".", $theString); // explode the string into an array, split by "." 
$result =  array();
$current = &$result; $current is a reference to the array we want to put a new key into, shifting further up the tree every time we add an array.

while ($key = array_shift($theArray)){ // array_shift() removes the first element of the array, and assigns it to $key. The loop will stop as soon as there are no more items in $theArray.
    $current[$key] = array(); // add the new key => value pair
    $current = &$current[$key]; // set the reference point to the newly created array.
}

var_dump($result);

?>

With an array_push() in the while loop.

What do you want the value of the deepest key to be?

Powertieke