我希望能够从数组中更改最后一个键 我尝试使用这个功能:
function getlastimage($newkey){
$arr = $_SESSION['files'];
$oldkey = array_pop(array_keys($arr));
$arr[$newkey] = $arr[$oldkey];
unset($arr[$oldkey]);
$_SESSION['files'] = $arr;
$results = end($arr);
print_r($arr);
}
如果我调用函数getlastimage('newkey')
它会更改密钥!但是如果我打印$ _SESSION后密钥没有更改?为什么这个?
答案 0 :(得分:2)
当您设置$arr = $_SESSION['files']
时,您实际上正在制作$_SESSION['files']
的副本。您对$arr
所做的一切都是 完成原始文件。
试试这个:
$arr =& $_SESSION['files'];
注意等号后的&符号。这会使$arr
成为 reference 到$_SESSION['files']
,而您对$arr
的更新也会影响$_SESSION['files']
,因为他们俩都会引用相同的内容。
另一种解决方案当然是通过将$_SESSION['files'] = $arr;
放在函数末尾来复制数组。
答案 1 :(得分:1)
尝试更新会话
$_SESSION['files'] = $arr;
答案 2 :(得分:1)
1)您在新阵列中设置了$_SESSION
。为了使您的更改生效,您需要重新设置原始$_SESSION
数组,否则您的新数组将被遗忘。
2)简单地array_pop()
获取最后一个元素并将其设置为新密钥会更容易,而不是浪费时间来获取所有密钥并弹出最后一个密钥,然后获取值从阵列再次。旧的键值毫无价值。