Fix bug in Arr::set that did not correctly create new array levels.
This commit is contained in:
parent
732a1e4a04
commit
b2991dd6ba
|
@ -46,21 +46,21 @@ public static function get($array, $key, $default = null)
|
|||
*/
|
||||
public static function set(&$array, $key, $value)
|
||||
{
|
||||
$reference =& $array;
|
||||
$keys = explode('.', $key);
|
||||
|
||||
foreach (explode('.', $key) as $segment)
|
||||
while (count($keys) > 1)
|
||||
{
|
||||
if ( ! isset($reference[$segment]))
|
||||
$key = array_shift($keys);
|
||||
|
||||
if ( ! isset($array[$key]))
|
||||
{
|
||||
$reference[$segment] = $value;
|
||||
|
||||
return;
|
||||
$array[$key] = array();
|
||||
}
|
||||
|
||||
$reference =& $reference[$segment];
|
||||
$array =& $array[$key];
|
||||
}
|
||||
|
||||
$reference = $value;
|
||||
$array[array_shift($keys)] = $value;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue