从php中的数组更改最后一个键名

时间:2010-04-19 23:29:14

标签: 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($arr);
    print_r($arr);
}

如果我调用函数getlastimage('newkey')它会更改密钥!但是如果我打印$ _SESSION后密钥没有更改?为什么这个?

3 个答案:

答案 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()获取最后一个元素并将其设置为新密钥会更容易,而不是浪费时间来获取所有密钥并弹出最后一个密钥,然后获取值从阵列再次。旧的键值毫无价值。