PHP Session değişkeni ayarlanır, ancak PHP görmüyor.

5 Cevap php

Ben üzerinde cam olan 24 saatten fazla ve gözlerim için kodlama oldum, ama burada stumped çünkü Tamam, belki bu. Bu neden olur:

<?php
session_start();
$tmp = "index";

echo "A: " . $_SESSION['page_loaded']['index']; // returns 1
echo "B: " . $_SESSION['page_loaded'][$tmp]; // is set, but is empty
?>

Ben burada çok temel bir şey eksik gibi hissediyorum ama ne olduğunu bilmiyorum.

5 Cevap

Ben aslında kesmek ve bu kodu yapıştırılan değil bir duygu var? Eğer dışarı gidiyoruz bir şey var mı?

Nereye aşağıdaki ayarlıyorsunuz?

$_SESSION['page_loaded'][$tmp];

Aşağıdaki işler:

<?php

    session_start();
    $tmp = "index";

    $_SESSION["page_loaded"][$tmp] = "Foo";

    echo "A: " . $_SESSION['page_loaded']["index"]; // foo
    echo "<br/>";
    echo "B: " . $_SESSION['page_loaded'][$tmp]; // foo

?>

Bu değer görmek için var_dump fonksiyonu ile deneyin.

Kullanmayı deneyin:

$tmp = 'index'; // Note the single quotes.
//...
echo "B: " . $_SESSION['page_loaded'][$tmp];

PHP biraz farklı çift ve tek tırnakla yorumlar. Size bakacak ne olabilir gibi bu yazılar here ve here okuyun.

GÜNCELLEME: Sadece benim akıl Özgün Posterler sorunu etkileyen tek veya çift tırnakla kullanarak kontrol etmek (aşağıda yorumlar verilen) netleştirmek için iki dizeleri eşit olmadığı durumlarda aşağıdaki örnekte gösterilmiştir:

$var = 1;

$tmpA = 'index_$var'; // will resolve to index_$var
$tmpB = "index_$var"; // will resolve to index_1

if ( $tmpA === $tmpB)
  echo 'Identical';
else
  echo 'Not Identical!'; // <--- we get this because they are NOT identical.

kullanmalısınız

 $_SESSION['page_loaded']['tmp'] = "index";

yerine

 $tmp = "index";

ve değerini almak için kullanabilir

  echo "B: " . $_SESSION['page_loaded']['tmp']; // the output is: B: index

(Dolar işareti $ kurtulmak)