Dış değişkene erişmeye Değişken kapsamı sorun

3 Cevap php

Ben büyük bir hiyerarşi ile bir işlevi vardır:

function func(){
    $a= 0; // Here the variable is 0
    while(...){
        echo $a; // gives me always 0
        for(...){
            if(...){
                if(...){
                    $num = func3();
                    $a = $num; // this $a does not corrospond to $a in the beginning
                }
            }
        }
    }
}

Herkes iç içe kapsamlardan $a değerini değiştirmek nasıl biliyor mu?

3 Cevap

Küresel ve yerel fonksiyon kapsamı: Önceki PHP 5.3 PHP sadece iki kapsamları vardır. Kapsam durum biraz karmaşık, ama burada bunları kullanarak konum gibi görünmüyor PHP 5.3 tanıtıldı kilitler.

Diğer birçok C stili programlama dillerinden farklı olarak, parantez / blokları not scopre bir seviye çağırmak yok. $a Eğer fonksiyonun başında ilan olduğunu aynı $a daha sonra erişmekte olduğunu. Eğer $a alıyoruz değeri beklenmedik ise, bu bir atama yoluyla ya da değişen diğer bazı işlevi içine referans olarak geçirilen çünkü ya, onun değerini değişiyor (...) eksik kod onun değer.

Küresel.

global $a;

func() {
  $a = 0;
  while() {
    echo $a;
    for() {
      if() {
        if() {
          $a = func3();
        }
      }
    }
  }
}

muhtemelen) bir önceki kapsamı veya func3 (in $ a kullanıyorsunuz kurdu "global $ a;" ya da belki ifadeler ulaştı asla eğer