הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   שאלה על תנאים בPHP (https://hosts.co.il/forums/showthread.php?t=21919)

בניה 16-05-06 12:35

שאלה על תנאים בPHP
 
ב"ה

יש דבר כזה:
PHP קוד:

if($a==1&&$b==2

האם הוא בודק $a==1 ואת הסימן && ורק אם $a==1 נכון הוא בודק גם את התנאי השני, או לא?

Tomer 16-05-06 12:44

ציטוט:

נכתב במקור על ידי בניה
ב"ה

יש דבר כזה:
PHP קוד:

if($a==1&&$b==2

האם הוא בודק $a==1 ואת הסימן && ורק אם $a==1 נכון הוא בודק גם את התנאי השני, או לא?

PHP קוד:

if($a==1) { if ($b==2) { } } 

השיטה הכי הגיונית.. למרות שמה שרשום בהתחלה אומר שאם $a = 1 ו $b = 2 ככה שזה עושה בערך מה שביקשת.

בניה 16-05-06 13:05

ב"ה


אם הבנתי אותך נכון-סוגריים נותנות קדימות לבדיקת תנאים.
תודה על הרעיון וגם מעניין לשמוע מה התשובה לשאלה שלי, אז אם משהוא יודע...

eXtaZa 16-05-06 13:16

אם גם $a==1 וגם $b==2 הוא יבצע את מה שאתה רוצה. אם רק אחד מהם הוא נכון והשני לא אז הוא לא יבצע את מה שאתה רוצה.
אם הוא נכנס לתנאי, והתנאי הראשון לא נכון, הוא יבדוק גם את השני.

x-ray 16-05-06 13:25

בניה כמו שאמר תומר,עושים את זה בהדרגתיות...

PHP קוד:

if ($a==1){
           if(
$b==2){ 


mlnn 16-05-06 13:46

&& - שני התנאים צריכים להיות שווים...
OR - מספיק תנאי אחד וזזה יבצע את זה...

בניה 16-05-06 14:28

ב"ה

לא הבנתם מה שאלתי.
נכון שב&& חייבים ששני התנאים יתקיימו?
אז אם הראשון לא מתקיים אז אין צורך לבדוק את השני כי מימילא הראשון לא התקיים נכון?
השאלה היא אם PHP בודקת בכל זאת גם את השני.

meshuga 16-05-06 14:30

ציטוט:

נכתב במקור על ידי בניה
ב"ה

לא הבנתם מה שאלתי.
נכון שב&& חייבים ששני התנאים יתקיימו?
אז אם הראשון לא מתקיים אז אין צורך לבדוק את השני כי מימילא הראשון לא התקיים נכון?
השאלה היא אם PHP בודקת בכל זאת גם את השני.

יש מצב שכן...יש מצב שלא...לך תדע...
לא נראה לי שבכלל אפשר לבדוק את זה.
יש לך איזה השוואה רצינית שאם הראשון לא טוב אז אתה לא רוצה שזה יבדוק את השני ואתה רוצה להיות בטוח שזה יהיה ככה?...תשתמש בשני ifים...

BlueNosE 16-05-06 15:03

תראה בניה
זה לא משנה
AND - 1 1
OR - 0 1 / 1 1 / 1 0
XOR - 1 0 / 0 1
זה אומר שזה ממש לא משנה סדר הבדיקה.
ברגע שבAND אחד הביטויים יחזיר 0 הביטוי פסול..
אבל לשאלתך- PHP בודקת קודם כל את הביטוי משמאל.

Alter 16-05-06 15:31

בניה ברגע שאתה עושה את הסימון של "וגם" - && הוא בודק אם
קוד:

$a==1
וגם אם
קוד:

$b==2
אם $a לא שווה לאחד אני לא חושב שהוא בכלל יבדוק את b כי אין סיבה שיבדוק אותו.
הרי הראשון לא מתקיים, אז הוא לא נכנס לתנאי כלל.

בניה 16-05-06 16:57

ב"ה


נכון שאין לו טעם לבדוק גם את שני הרי מימילא הAND לא יתקיים השאלה היא האם הוא באמת לא בודק גם את השני? וזו השאלה.

-VladK- 16-05-06 16:58

תגיד מה זה משנה אם הוא בודק או לא? הריי מילא אם אחד לא מתאים אז התנאי לא יתקיים...מה אכפת לך מקסימום יבדוק עוד משתנה אחד...

Eli-Hai 16-05-06 18:13

התנאי שכתבת יבדוק בעצם אם $a שווה למה שגדרת ואם $b שווה למה שהגדרת.
כל הקטע עם &&, שאם אחד מהתנאים המצויינים ($a שווה לx ו$b שווה לy) לא מתאים למה שאתה מנסה לבדוק, הוא יחזיר FALSE. בשביל זה משתמשים ב ||, שלמרות שאחד מהתנאים מחזיר ערך לא נכון (FALSE) הוא בעצם עדיין יחזיר שכל הIF הוא TRUE.

מקווה שעזרתי לך, אם לא, מצטער :)

MasterNir 16-05-06 18:24

Atom-bomb, אם היית מתכנת בצוות שלי הייתי מעיף אותך. לך תעשה לך 5 פקודות IF כשכל אחת מהן לוקחת לפחות שתי שורות (פתיחה וסגירה) ומצאת לעצמך חתיכת קוד מכוער + בלתי יעיל וקשה לתחזוק.

בקשר לשאלה המקורית - ביטויים בתוך הסוגריים ייבדקו לפני האופרטורים.

Tomer 16-05-06 18:26

ציטוט:

נכתב במקור על ידי MasterNir
Atom-bomb, אם היית מתכנת בצוות שלי הייתי מעיף אותך. לך תעשה לך 5 פקודות IF כשכל אחת מהן לוקחת לפחות שתי שורות (פתיחה וסגירה) ומצאת לעצמך חתיכת קוד מכוער + בלתי יעיל וקשה לתחזוק.

בקשר לשאלה המקורית - ביטויים בתוך הסוגריים ייבדקו לפני האופרטורים.

וזו כנראה הסיבה שאני לא עובד בצוות ולא עושה עבודות תכנות בתשלום 8-* אבל אני שמח שחשבת על להכניס אותי אליך לצוות :)

בניה 16-05-06 19:17

ב"ה


לא נראה לי שהבינו אותי.
אני אנסה לבדוק את זה בעצמי.
תודה לכל מי שניסה.

MasterNir 16-05-06 19:29

ציטוט:

נכתב במקור על ידי בניה
ב"ה


לא נראה לי שהבינו אותי.
אני אנסה לבדוק את זה בעצמי.
תודה לכל מי שניסה.

אני עניתי לך בסוף התגובה הקודמת שלי...

ולהמחשה:
PHP קוד:

if (($a==1)&&($b==1)) 

יבדוק את שני התנאים, ורק לאחר מכן יבדוק את האופרטור.

PHP קוד:

if ($a==&& $b==1

יבדוק את התנאי הראשון, לאחר מכן את האופרטור והתנאי השני.

Tomer 16-05-06 19:35

ומכאן נובע שהמשפט הראשון שרציתי לרשום נכון.

PHP קוד:

if (($a==1) && $b==1


MasterNir 16-05-06 19:38

ציטוט:

נכתב במקור על ידי Atom-Bomb
ומכאן נובע שהמשפט הראשון שרציתי לרשום נכון.

PHP קוד:

if (($a==1) && $b==1


כן, ועדיף פי כמה על קינון if מיותר...

בניה 16-05-06 20:16

ב"ה

השאלה שלי היא אם התנאי הראשון לא מתקיים והאפורטור הוא && אז התנאי השני גם יבדק?
לא ענו לי במדויק על השאלה.

Tomer 16-05-06 20:27

למה שלא תבדוק את זה?

PHP קוד:

function blabla() {
FWRITE ....
}
$a 5;
if ((
$a == 4) && blabla()) return true

במידה והוא מגיע לתנאי השני -> ירשם בקובץ
אם לא, אז... כנראה שהוא עוצר :)


כל הזמנים הם GMT +2. הזמן כעת הוא 17:19.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ