2010-04-19 5 views
2

je veux être en mesure de changer la dernière touche du tableau i essayer avec cette fonction i fait:changer nom clé du tableau en php

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); 
} 

si j'appelle la fonction getlastimage('newkey') il changer la clé! mais après si j'imprime le $ _SESSION la clé n'est pas changée? pourquoi ça?

+0

merci à tous, j'ai édité le code! Ça marche très bien maintenant! – robertdd

Répondre

1

Wow, votre code est un gâchis!

1) Vous définissez $_SESSION dans un nouveau tableau. Pour que vos modifications prennent effet, vous devrez revenir à votre tableau original $_SESSION, sinon votre nouveau tableau sera simplement oublié. 2) Il serait plus facile de simplement obtenir le dernier élément et de le définir sur la nouvelle clé, plutôt que de perdre le temps d'aller chercher toutes les clés et d'enlever la dernière clé, puis d'extraire la valeur du tableau encore. L'ancienne valeur clé est sans valeur.

1

essayer de mettre à jour la session

$_SESSION['files'] = $arr; 
2

Lorsque vous définissez $arr = $_SESSION['files'], vous faites en fait une copie de $_SESSION['files']. Tout ce que vous faites à $arr est et non fait à l'original.

Essayez ceci:

$arr =& $_SESSION['files']; 

Notez l'esperluette après le signe égal. Cela fera $arrreference à $_SESSION['files'], et vos mises à jour à $arr affecteront également $_SESSION['files'], car ils référencent tous les deux le même contenu.

L'autre solution est bien sûr de simplement recopier le tableau en mettant $_SESSION['files'] = $arr; à la fin de votre fonction.

Questions connexes