在php中更改数组中的最后一个键名
我希望能够更改数组中的最后一个键 我尝试使用我制作的这个函数:在php中更改数组中的最后一个键名,php,arrays,key,Php,Arrays,Key,我希望能够更改数组中的最后一个键 我尝试使用我制作的这个函数: function getlastimage($newkey){ $arr = $_SESSION['files']; $oldkey = array_pop(array_keys($arr)); $arr[$newkey] = $arr[$oldkey]; unset($arr[$oldkey]); $_SESSION['files'] = $arr; $results = end($
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')
它会更改键!但是,如果我打印了$\u会话,密钥不会更改吗?为什么会这样?尝试更新会话
$_SESSION['files'] = $arr;
设置
$arr=$\u会话['files']
时,实际上是在复制$\u会话['files']
。您对$arr
所做的一切都是而不是对原始文件所做的
试试这个:
$arr =& $_SESSION['files'];
记下等号后的和号。这将使$arr
成为$\u会话['files']
,而您对$arr
的更新也将影响$\u会话['files']
,因为它们都引用相同的内容
另一种解决方案当然是通过将
$\u SESSION['files']=$arr代码>在函数末尾。哇,你的代码乱七八糟
1) 您正在一个新数组中设置$\u会话
。为了使更改生效,您需要将会话设置回原始的$\u会话
数组,否则您的新数组将被遗忘
2) 简单地array\u pop()
获取最后一个元素并将其设置为新的键会更容易,而不是浪费时间获取所有键并弹出最后一个键,然后再次从数组中获取值。旧的键值一文不值。谢谢大家,我编辑了代码!现在工作很好!