php diziden son anahtarı adını değiştirmek

3 Cevap php

i want to be able to change the last key from array i try with this function i made:

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

i işlev çağrısı getlastimage('newkey') it! ama $ _SESSION yazdırırsanız sonra anahtar değişmez anahtarı değiştirmek? neden bu?

3 Cevap

Wow, kod bir karmaşa!

1) Yeni bir dizi $_SESSION kuruyorlar. Yaptığınız değişikliklerin etkili olması için için, aksi takdirde yeni dizi sadece unutulmuş olacak, geri orijinal $_SESSION dizi ayarlamanız gerekir.

2) Bu sadece array_pop() son öğeyi almak ve yerine tüm anahtarları alıp kapalı son anahtarı pop vakit daha, yeni bir anahtar ayarlamak için kolay olurdu, daha sonra gelen değeri getirmek dizi tekrar. Eski anahtar değeri değersiz.

Eğer $arr = $_SESSION['files'] ayarlandığında, aslında $_SESSION['files'] bir kopyasını yapıyoruz. Eğer $arr not orijinal yapılır için her şeyi yapmak.

Bu deneyin:

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

Eşittir işareti sonra işareti unutmayın. Bu bir reference to $_SESSION['files'] $arr yapacak ve sizin güncellemeleri $arr beri, $_SESSION['files'] de etkileyecektir her ikisi de aynı içeriği başvuru.

Diğer çözüm sadece işlevi sonunda $_SESSION['files'] = $arr; koyarak geri diziyi kopyalamak için tabii ki.

oturumu güncelleme deneyin

$_SESSION['files'] = $arr;