- krsort: documentation ( source)
- explode: documentation ( source)
<?php
function setKey($session_keys, $value)
{
$current_key = '';
$counter = 0;
$prev_step = $_SESSION;
try {
$session_keys_array = explode(':', $session_keys);
krsort($session_keys_array);
$c = count($session_keys_array);
$count = 0;
$arr = array();
foreach ($session_keys_array as $key) {
$count++;
switch ($count) {
case 1:
$arr[$key] = $value;
break;
case ($count > 1 AND $count < $c):
$arr[$key] = $arr;
break;
case $c:
$_SESSION[$key] = $arr;
break;
}
}
} catch (Exception $e) {
//TODO:log notice if Session[currentKey] is not an array
return false;
}
return array_key_exists($key,$prev_step) && eval('!empty($_SESSION' . $current_key . ');');
}
$_SESSION['1']['2']['3'] = 'zzzz';
setKey('1:2:3', 77);
echo $_SESSION['1']['2']['3'];
print_f($_SESSION);