להסביר למה הוא קיבל את השגיאה הזאת
קודם כל - הסבר בנוגע לאופרטור @. מה שהאופרטור הזה עושה זה "בולע" לתוכו כל שגיאה שקוראת בזמן ריצה (לא שגיאת קוד). לדוגמא עבור הקוד הבא:
לא תקבל שגיאה של חילוק ב-0 (כיוון שהשגיאה "נבלעת" ע"י ה-@). לפרטים נוספים קרא
כאן. בנוגע לתגובה ש"אם זה לא קריטי אז שהוא לא יודיע על שגיאה", זה לא נכון... חילוק ב-0 זאת שגיאה קריטית, ובכל זאת אין הודעה על שגיאה.
ועכשיו בחזרה לשאלה
אחד מסוגי השגיאות שPHP מודיעה לנו עליהם הוא משתנה שלא מוגדר. למשל, אם תריץ את השורה הבאה:
(מבלי שהגדרת קודם לכן את המשתנה a$) וPHP תוגדר להוציא את כל השגיאות, אתה תקבל את השגיאה: Undefined variable, כיוון שהמשתנה a$ לא הוגדר.
מעבר להגדרה של משתנים יש הגדרה של מפתחות במערך (index). אם למשל תריץ את הקוד הבא:
קוד PHP:
error_reporting(2047);
$a = array();
echo $a['b'];
(שים לב שהשורה הראשונה אחראית על הצגת כל השגיאות...) אתה תקבל את השגיאה Undefined index. המשתנה a$ מוגדר להיות מערך, אולם בשום מקום לא הגדרנו את ['a['b$, ולכן האינדקס b לא קיים.
השגיאה שאתה מקבל (כאן אני מנחש כי לא כתבת שום קוד) היא בנוגע לאחד האינדקסים שבמערך GET_$. מה שאתה מנסה לעשות (אם הניחוש שלי נכון) זה לקחת את ['GET['do_$ או משתנה אחר משורת הכתובת, אולם המשתנה לא מוגדר, ולכן אתה מקבל שגיאה.
הפיתרון הוא לבדוק האם קיים האינדקס במערך באופן הבא:
קוד PHP:
if(array_key_exists('do',$_GET))
$do = $_GET['do'];
שים לב שבצורה הזאת אתה לא מקבל שום שגיאה, וזאת גם הצורה הנכונה לבצע את הדברים
אם משהו לא מובן אתה מוזמן לשאול.
בברכה, דקל