Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中更改数组中的最后一个键名_Php_Arrays_Key - Fatal编程技术网

在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()
获取最后一个元素并将其设置为新的键会更容易,而不是浪费时间获取所有键并弹出最后一个键,然后再次从数组中获取值。旧的键值一文不值。

谢谢大家,我编辑了代码!现在工作很好!