Bir PHP betiği çalıştırıyorum ve aşağıdaki gibi hatalar almaya devam ediyorum:
Uyarı: Undefined variable: my_variable_name in C:\wamp\www\mypath\index.php on line 10
Uyarı: Undefined index: my_index C:\wamp\www\mypath\index.php on line 11
Satır 10 ve 11 şu şekilde görünür:
echo "My variable value is: " . $my_variable_name;
echo "My index value is: " . $my_array["my_index"];
Bu hata mesajlarının anlamı nedir?
Neden birdenbire ortaya çıktılar? Bu betiği yıllarca kullandım ve hiç sorun yaşamadım.
Onları nasıl düzeltebilirim?
Bu, sorunu tekrar tekrar açıklamak zorunda kalmak yerine, insanların yinelenen olarak bağlantı vermeleri için bir Genel Referans sorusudur. Bunun gerekli olduğunu hissediyorum çünkü bu konudaki çoğu gerçek dünya cevabı çok spesifiktir
İlgili Meta tartışması:
Bunları deneyin
S1: bu uyarı $varname'nin olmadığı anlamına gelir 'nin mevcut kapsamında tanımlanmıştır. senaryo.
S2: Herhangi bir şüpheli değişkeni kullanmadan önce isset(), empty() koşullarının kullanılması iyi çalışır.
// recommended solution for recent PHP versions
$user_name = $_SESSION['user_name'] ?? '';
// pre-7 PHP versions
$user_name = '';
if (!empty($_SESSION['user_name'])) {
$user_name = $_SESSION['user_name'];
}
Ya da hızlı ve kirli bir çözüm olarak:
// not the best solution, but works
// in your php setting use, it helps hiding site wide notices
error_reporting(E_ALL ^ E_NOTICE);
Oturumlar hakkında not:
Oturumları kullanırken, oturumları kullanan tüm dosyaların içine session_start();
yerleştirilmesi gerekir.
Genellikle "kötü programlama" ve şimdi veya daha sonra hata yapma olasılığı nedeniyle.
if (isset($varname))
Bu, henüz hiçbir şey atamadığınız bir değişkeni test ettiğiniz, değerlendirdiğiniz veya yazdırdığınız anlamına gelir. Bu, ya bir yazım hatası yaptığınız ya da değişkenin önce bir şeye başlatılıp başlatılmadığını kontrol etmeniz gerektiği anlamına gelir. Mantık yollarınızı kontrol edin, bir yolda ayarlanmış ancak diğerinde ayarlanmamış olabilir.