Chapterبەش 6 · Lectureوانە 6.1
Conditional Statements: if, else, elseif and switchڕستە مەرجییەکان: if و else و elseif و switch
How a PHP program makes decisions: conditions and comparison operators, if, if...else, if...elseif...else, logical operators, isset()/unset(), and switch with break and fall-through.
PHP چۆن بڕیار دەدات: و ، if، if...else، if...elseif...else، ، isset()/unset() و switch لەگەڵ break و .
What you will learnچی فێر دەبیت
- Write conditions with comparison operators, including
===and!==. - Use
if,if...elseandif...elseif...elsecorrectly, with braces. - Join conditions with
&&,||and!. - Check whether a variable is set with
isset()and remove it withunset(). - Write a
switchwithbreakanddefault, and predict fall-through. - Choose between
if...elseandswitch.
- بە بنووسیت، لەوانە
===و!==. ifوif...elseوif...elseif...elseبە دروستی و بە کەوانەی لوولی بەکاربهێنیت.- بە
&&و||و!پێکەوە ببەستیت. - بە
isset()بپشکنیت ئایا هەیە و بەunset()بیسڕیتەوە. switchێک بەbreakوdefaultبنووسیت و پێشبینی بکەیت.- لە نێوان
if...elseوswitchدا هەڵبژێریت.
Why programs need to make decisionsبۆچی بەرنامەکان پێویستیان بە بڕیاردانە
Until now, PHP ran your code from the first line to the last line, every time. Real web pages must do more. They must react to the situation: show a welcome message only to a user who logged in, print Pass or Fail from a mark, or show an error when a form field is empty.
تا ئێستا PHP کۆدەکەت هەموو جارێک لە یەکەم دێڕەوە تا کۆتا دێڕ جێبەجێ دەکرد. بەڵام لە ژیانی ڕاستەقینەدا دەبێت زیاتر بکەن. دەبێت بەپێی بارودۆخەکە کاردانەوەیان هەبێت: پەیامی بەخێرهاتن تەنها بۆ ئەو پیشان بدەن کە چووەتە ژوورەوە، بەپێی نمرەیەک دەرچوو یان کەوتوو بنووسن، یان کاتێک بەتاڵە پیشان بدەن.
You do this with . A conditional statement checks a . Then it runs different code for different conditions. Every programming language has this idea: it is selection, one of the three that every is built from (three building blocks); the on this page use the symbols from Flowchart symbols.
ئەم کارە بە دەکرێت. دەپشکنێت، پاشان بۆ هەر کۆدێکی جیاواز جێبەجێ دەکات. هەموو ئەم بیرۆکەیەی هەیە: پێی دەوترێت هەڵبژاردن و یەکێکە لە سێ هەموو (سێ بەردی بناغە)؛ ئەم لاپەڕەیە ئەو هێمایانە بەکار دەهێنن کە لە هێماکانی هێڵکاریی ڕەوت ڕوون کراونەتەوە.
Think of a taxi driver in Erbil at a traffic light. If the light is green, he drives on. Else if it is yellow, he slows down. Else (the light is red), he stops. He checks the light, and his action depends on the answer. PHP decisions work the same way.
شۆفێرێکی تەکسی لە هەولێر بهێنە پێش چاوت کە گەیشتووەتە گڵۆپی هاتوچۆ. ئەگەر گڵۆپەکە سەوز بێت، دەڕوات. ئەگەرنا ئەگەر زەرد بێت، خێرایی کەم دەکاتەوە. ئەگەرنا (گڵۆپەکە سوورە)، دەوەستێت. سەیری گڵۆپەکە دەکات و کارەکەی بەپێی ئەوەی دەیبینێت دەگۆڕێت. بڕیاردان لە PHP هەر بەم شێوەیە کار دەکات.
Where the analogy stops workingسنووری ئەم نموونەیە
A driver can think about many things at once. PHP checks its conditions one by one, from top to bottom, and each condition can only be true or false.
شۆفێر دەتوانێت لە یەک کاتدا بیر لە چەند شتێک بکاتەوە. بەڵام PHP یەک لە دوای یەک، لە سەرەوە بۆ خوارەوە، دەپشکنێت و هەر تەنها دەتوانێت true یان false بێت.
PHP has four kinds of conditional statements:
PHP چوار جۆر هەیە:
ifstatement – runs some code if one condition is true.if...elsestatement – runs some code if a condition is true, and other code if that condition is false.if...elseif...elsestatement – runs different code for more than two conditions.switchstatement – selects one of many blocks of code to run, based on one value.
- – کۆدێک جێبەجێ دەکات ئەگەر ڕاست بێت.
if...else– کۆدێک جێبەجێ دەکات ئەگەر ڕاست بێت و کۆدێکی تر ئەگەر هەمان هەڵە بێت.if...elseif...else– بۆ زیاتر لە دوو ، کۆدی جیاواز جێبەجێ دەکات.- – بەپێی یەک ، یەکێک لە چەندین هەڵدەبژێرێت و جێبەجێی دەکات.
PHP 8 also has short forms: the ?:, the ?? operator and the match expression. They are optional extra knowledge; see Extra: short ways to decide.
PHP 8 چەند شێوەیەکی کورتیشی هەیە: ?:، ?? و match. ئەمانە زانیاریی زیادەن؛ سەیری زیادە: ڕێگای کورت بۆ بڕیاردان بکە.
A lesson in Kurdish (Sorani) on conditions: what they are, why programs need them, and how to write them in PHP.
وانەیەک بە کوردیی سۆرانی: چییە، بۆچی پێویستیان پێیەتی و چۆن لە دەینووسین.
Kurdish (Sorani) introduction to conditions in PHP.
ناساندنی لە ، بە کوردیی سۆرانی.
Conditions: questions with a true or false answerمەرج: پرسیارێک کە وەڵامەکەی ڕاست یان هەڵەیە
A is a question that PHP can answer with only true or false. For example: Is $a larger than $b? In code, a condition is an inside parentheses: ($a > $b).
پرسیارێکە کە PHP تەنها بە ڕاست (true) یان هەڵە (false) وەڵامی دەداتەوە. بۆ نموونە: ئایا $a لە $b گەورەترە؟ لە کۆددا، لەناو کەوانەدا: ($a > $b).
A condition usually compares that are stored in . Here is a small warm-up: two variables and their values.
زۆرجار ئەو بەراورد دەکات کە لە هەڵگیراون. ئەمە گەرمکردنەوەیەکی بچووکە: دوو و .
<?php
$var1 = 10;
echo $var1;
echo "<br>";
$var2 = "Hello World";
echo $var2;
?>10 Hello World
HTML sent to the browserئەو HTMLـەی دەنێردرێت بۆ تۆڕگەڕ
10<br>Hello WorldExplain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 2-3
$var1holds the 10.echoprints it.$var1هەڵدەگرێت (10).echoچاپی دەکات.- Lineدێڕی 6-7
$var2holds theHello World.$var2هەڵدەگرێت:Hello World.
Now let PHP answer some questions. The var_dump() shows the answer and its type. The answer is a value: true or false.
ئێستا با چەند پرسیارێک لە PHP بکەین. var_dump() وەڵامەکە و جۆرەکەی پیشان دەدات. وەڵامەکە : true یان false.
true یان false دەداتtrue-false.phpPHPRuns on the serverلەسەر ڕاژەکاری وێب کار دەکات<?php
$age = 20;
var_dump($age > 18); // is 20 greater than 18?
var_dump($age == 25); // is 20 equal to 25?
var_dump($age != 25); // is 20 not equal to 25?
?>bool(true) bool(false) bool(true)
HTML sent to the browserئەو HTMLـەی دەنێردرێت بۆ تۆڕگەڕ
bool(true)
bool(false)
bool(true)PHP sends three lines. The browser joins them into one line. Put <pre> before them if you want to keep the lines.
PHP سێ دێڕ دەنێرێت، بەڵام دەیانکات بە یەک دێڕ. ئەگەر دەتەوێت دێڕەکان بمێننەوە، <pre> لە پێشیانەوە دابنێ.
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 4
20 is greater than 18, so the answer is
true.20 لە 18 گەورەترە، بۆیە وەڵامەکە
trueـە.- Lineدێڕی 5
==asks "are they equal?". 20 is not 25, so the answer isfalse.==دەپرسێت «ئایا یەکسانن؟». 20 یەکسان نییە بە 25، بۆیە وەڵامەکەfalseـە.- Lineدێڕی 6
!=asks "are they different?". They are different, sotrue.!=دەپرسێت «ئایا جیاوازن؟». جیاوازن، بۆیە وەڵامەکەtrueـە.
Conditions: questions with a true or false answerمەرج: پرسیارێک کە وەڵامەکەی ڕاست یان هەڵەیە
Comparison operatorsکارپێکەرەکانی بەراوردکردن
The symbols that build conditions are called . These are the ones you will use most:
ئەو هێمایانەی دروست دەکەن پێیان دەوترێت . ئەمانە ئەوانەن کە زۆرتر بەکاریان دەهێنیت:
| Operator | Meaningواتا | Example ($a = 5)نموونە ($a = 5) | Resultئەنجام |
|---|---|---|---|
> | greater thanگەورەترە لە | $a > 3 | true |
>= | greater than or equal toگەورەترە یان یەکسانە بە | $a >= 5 | true |
< | less thanبچووکترە لە | $a < 3 | false |
<= | less than or equal toبچووکترە یان یەکسانە بە | $a <= 4 | false |
== | equal value یەکسانە | $a == "5" | true |
!= | not equal value (also written <>) یەکسان نییە (بە <>یش دەنووسرێت) | $a != 7 | true |
=== | identical: equal value and same typeوەک یەک: و جۆریان یەکسانە | $a === "5" | false |
!== | not identical: different value or different typeوەک یەک نین: یان جۆریان جیاوازە | $a !== "5" | true |
== compares values, === also compares types== نرخ بەراورد دەکات، === جۆریش بەراورد دەکاتidentical.phpPHPRuns on the serverلەسەر ڕاژەکاری وێب کار دەکات<?php
var_dump("5" == 5); // same value?
var_dump("5" === 5); // same value AND same type?
var_dump("5" != 5); // different value?
var_dump("5" !== 5); // different value OR different type?
?>bool(true) bool(false) bool(false) bool(true)
HTML sent to the browserئەو HTMLـەی دەنێردرێت بۆ تۆڕگەڕ
bool(true)
bool(false)
bool(false)
bool(true)Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 2
"5"is a and5is an .==changes the string to a number first, so they are equal."5"و5.==سەرەتا دەگۆڕێت بۆ ژمارە، بۆیە یەکسان دەبن.- Lineدێڕی 3
===does not change types. A string is not an integer, so the answer isfalse.===جۆرەکان ناگۆڕێت. و یەک جۆر نین، بۆیە وەڵامەکەfalseـە.- Lineدێڕی 5
!==is the opposite of===.!==پێچەوانەی===ـە.
Conditions: questions with a true or false answerمەرج: پرسیارێک کە وەڵامەکەی ڕاست یان هەڵەیە
Comparing text: capital letters matterبەراوردکردنی دەق: پیتی گەورە و بچووک گرنگە
When == compares two , it is . For PHP, "No" and "no" are two different strings. A student found this problem in a small program. We rewrite it here with neutral words. The program should answer in Kurdish, Bale (yes) or Na (no).
کاتێک == دوو بەراورد دەکات، . بۆ PHP، "No" و "no" دوو جیاوازن. خوێندکارێک ئەم کێشەیەی لە بچووکدا دۆزییەوە. لێرەدا بە وشەی ئاسایی دووبارە دەینووسینەوە. دەبێت بە کوردی بڵێت Bale (بەڵێ) یان Na (نەخێر).
<?php
$answer = "no";
if ($answer == "Yes") {
echo "Bale";
} elseif ($answer == "No") {
echo "Na";
} else {
echo "Please write Yes or No";
}
?>Please write Yes or No
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 2
The user typed
nowith a small n.noی بە nی بچووک نووسیوە.- Lineدێڕی 6
"no" == "No"isfalse, because n and N are different letters."no" == "No"هەڵەیە (false)، چونکە n و N دوو پیتی جیاوازن.- Lineدێڕی 8-9
No condition was true, so the
elseblock runs.هیچ ڕاست نەبوو، بۆیە بلۆکی
elseجێبەجێ دەبێت.
The fix: make the letters the same case before you compare. The strtolower() changes all letters to small letters. Another way is strcasecmp(), which compares two strings and ignores case. It returns 0 when they are equal.
چارەسەر: پێش بەراوردکردن، پیتەکان وەک یەکیان لێ بکە. strtolower() هەموو پیتەکان دەکات بە پیتی بچووک. ڕێگایەکی تر strcasecmp()ـە، کە دوو بەراورد دەکات و گوێ بە گەورە و بچووکی پیت نادات. ئەگەر یەکسان بن 0 دەگەڕێنێتەوە.
<?php
$answer = "no";
$answer = strtolower($answer); // "no", "No" and "NO" all become "no"
if ($answer == "yes") {
echo "Bale";
} elseif ($answer == "no") {
echo "Na";
} else {
echo "Please write Yes or No";
}
?>Na
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 3
no,NoandNOall becomeno.noوNoوNOهەموویان دەبن بەno.- Lineدێڕی 5, 7
Compare with small-letter words.
لەگەڵ وشەی پیتبچووک بەراورد بکە.
<?php
var_dump("no" == "No"); // case-sensitive
var_dump(strtolower("No") == "no"); // compare after lowering
var_dump(strcasecmp("no", "No") === 0); // 0 means "equal, ignoring case"
?>bool(false) bool(true) bool(true)
HTML sent to the browserئەو HTMLـەی دەنێردرێت بۆ تۆڕگەڕ
bool(false)
bool(true)
bool(true)The if statementڕستەی if
The is the simplest decision. PHP checks the condition. If it is true, PHP runs the code. If it is false, PHP skips the code and continues after it.
سادەترین جۆری بڕیاردانە. PHP دەپشکنێت. ئەگەر ڕاست بێت، کۆدەکە جێبەجێ دەکات. ئەگەر هەڵە بێت، بازی بەسەر کۆدەکەدا دەدات و لە دوای ئەوەوە بەردەوام دەبێت.
The if statementڕستەی if
Format 1: one statement, no bracesشێوەی 1: یەک ڕستە، بێ کەوانەی لوولی
if (expression)
statement;The expression in the parentheses is the condition. Without curly braces, the if controls only the one statement that comes right after it.
ئەو لەناو کەوانەدایە . بەبێ کەوانەی لوولی، if تەنها ئەو یەک کۆنترۆڵ دەکات کە ڕاستەوخۆ لە دوایەوە دێت.
<?php
$a = 5;
$b = 1;
if ($a > $b)
echo "a is larger than b";
?>a is larger than b
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 5
The condition: is 5 greater than 1? Yes, it is true.
: ئایا 5 لە 1 گەورەترە؟ بەڵێ، ڕاستە.
- Lineدێڕی 6
This one statement belongs to the
if. It runs because the condition is true.ئەم یەک سەر بە
ifـە. جێبەجێ دەبێت چونکە ڕاستە.
You can even write a short if on one line. The summary notes use this example:
دەتوانیت ifی کورت لەسەر یەک دێڕیش بنووسیت. پوختەی وانەکان ئەم نموونەیەی هێناوە:
<?php
if (2 > 1) echo "2 is greater than 1";
?>2 is greater than 1
The if statementڕستەی if
Format 2: a block in curly bracesشێوەی 2: بلۆکێک لەناو کەوانەی لوولیدا
If you have more than one line of code, put the lines inside curly braces { }. Everything between the braces is one , and all of it belongs to the if.
ئەگەر زیاتر لە یەک دێڕ کۆدت هەیە، دێڕەکان بخەرە ناو کەوانەی لوولی { }. هەموو ئەوەی لە نێوان کەوانەکاندایە یەک و هەمووی سەر بە ifـە.
if (condition) {
code to be executed if the condition is true;
}<?php
$a = 4;
$b = 3;
if ($a > $b) {
echo "a is larger than b";
}
?>a is larger than b
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 2-3
Create two variables.
دوو دروست بکە.
- Lineدێڕی 5
Is 4 larger than 3? Yes, so the block runs.
ئایا 4 لە 3 گەورەترە؟ بەڵێ، بۆیە بلۆکەکە جێبەجێ دەبێت.
- Lineدێڕی 7
The closing brace ends the block. No semicolon is needed after
}.کەوانەی داخستن بلۆکەکە کۆتایی پێدێنێت. دوای
}پێویست بە ناکات.
if (run or skip) and if...else (choose one of two blocks). if (جێبەجێکردن یان بازدان) و if...else (هەڵبژاردنی یەکێک لە دوو بلۆک).CêIT<?php
$a = 1;
$b = 5;
if ($a > $b)
echo "a is larger than b<br>";
echo "This line always runs";
?>This line always runs
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 5
1 is not larger than 5, so the condition is false.
1 لە 5 گەورەتر نییە، بۆیە هەڵەیە.
- Lineدێڕی 6
Only this line belongs to the
if, so it is skipped.تەنها ئەم دێڕە سەر بە
ifـە، بۆیە تێدەپەڕێنرێت.- Lineدێڕی 7
This line only looks like part of the
if. Spaces mean nothing to PHP, so it always runs.ئەم دێڕە تەنها وا دیارە بەشێک بێت لە
if. بۆ PHP هیچ واتایەکی نییە، بۆیە هەمیشە جێبەجێ دەبێت.
The if statementڕستەی if
Two separate if statementsدوو ڕستەی ifـی سەربەخۆ
The lecture then shows two independent if statements, one for each direction:
پاشان وانەکە دوو پیشان دەدات، یەکێک بۆ هەر ئاراستەیەک:
<?php
$a = 3;
$b = 4;
if ($a > $b) {
echo "a is larger than b";
}
if ($a < $b) {
echo "a is not larger than b";
}
?>a is not larger than b
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 5
3 > 4 is false: skip.
3 > 4هەڵەیە: تێدەپەڕێت.- Lineدێڕی 8
3 < 4 is true: print the message.
3 < 4ڕاستە: پەیامەکە چاپ دەکات.
This works, but there is a gap. What if $a and $b are equal? Then both conditions are false, and the page shows nothing:
ئەمە کار دەکات، بەڵام کەلێنێکی تێدایە. ئەگەر $a و $b یەکسان بن چی دەبێت؟ ئەو کاتە هەردوو هەڵەن و پەڕەکە هیچ پیشان نادات:
<?php
$a = 4;
$b = 4;
if ($a > $b) {
echo "a is larger than b";
}
if ($a < $b) {
echo "a is not larger than b";
}
// Nothing is printed: 4 is not larger than 4, and 4 is not smaller than 4.
?>The page is empty: no condition was true.
پەڕەکە بەتاڵە: هیچ ڕاست نەبوو.
PHP also checks both conditions every time, even when the first one was already true. The next two statements, if...else and elseif, solve these problems.
هەروەها PHP هەموو جارێک هەردوو دەپشکنێت، تەنانەت کاتێک یەکەمیان ڕاست بووبێت. دوو داهاتوو، if...else و elseif، ئەم کێشانە چارەسەر دەکەن.
if...else: one of two pathsif...else: یەکێک لە دوو ڕێگا
The if...else statement runs some code if a condition is true, and other code if that condition is false. The has no condition of its own. It catches every case that the if did not catch.
if...else کۆدێک جێبەجێ دەکات ئەگەر ڕاست بێت و کۆدێکی تر ئەگەر هەمان هەڵە بێت. هیچ تایبەت بە خۆی نییە. هەموو ئەو حاڵەتانە دەگرێت کە if نەیگرتوون.
if (condition) {
code to be executed if condition is true;
} else {
code to be executed if condition is false;
}<?php
$a = 3;
$b = 4;
if ($a > $b) {
echo "a is larger than b";
} else {
echo "a is not larger than b";
}
?>a is not larger than b
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 5
3 > 4 is false…
3 > 4هەڵەیە…- Lineدێڕی 7-8
…so the
elseblock runs.…بۆیە بلۆکی
elseجێبەجێ دەبێت.
Look at the right half of the flowchart above: with if...else, exactly one of the two blocks runs, never both and never none. Now the case $a == $b also prints something (a is not larger than b), because "not larger" includes "equal".
سەیری نیوەی ڕاستی سەرەوە بکە: لە if...elseدا تەنها یەکێک لە دوو بلۆکەکە جێبەجێ دەبێت، هەرگیز هەردووکیان و هەرگیز هیچیان. ئێستا حاڵەتی $a == $bیش شتێک چاپ دەکات (a is not larger than b)، چونکە «گەورەتر نییە» یەکسانبوونیش دەگرێتەوە.
if...elseif...else: more than two pathsif...elseif...else: زیاتر لە دوو ڕێگا
The if...elseif...else statement runs different code for more than two conditions. Each adds one more condition to check.
if...elseif...else بۆ زیاتر لە دوو کۆدی جیاواز جێبەجێ دەکات. هەر تر بۆ پشکنین زیاد دەکات.
if (condition) {
code to be executed if this condition is true;
} elseif (condition) {
code to be executed if this condition is true;
} else {
code to be executed if all conditions are false;
}This is how to deal with different cases. Now all three cases (larger, equal, smaller) get their own message:
ئەمە ڕێگای مامەڵەکردنە لەگەڵ حاڵەتی جیاواز. ئێستا هەر سێ حاڵەتەکە (گەورەتر، یەکسان، بچووکتر) پەیامی تایبەت بە خۆیان هەیە:
<?php
$a = 4;
$b = 4;
if ($a > $b) {
echo "a is larger than b";
} elseif ($a == $b) {
echo "a is equal to b";
} else {
echo "a is smaller than b";
}
?>a is equal to b
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 5
4 > 4 is false, so PHP goes on to the next condition.
4 > 4هەڵەیە، بۆیە PHP دەچێتە سەر دواتر.- Lineدێڕی 7
4 == 4 is true. Note:
==compares,=would assign!4 == 4ڕاستە. ئاگاداربە:==بەراورد دەکات،=دادەنێت!- Lineدێڕی 8
This block runs. PHP then jumps to the end; the
elseis not checked.ئەم بلۆکە جێبەجێ دەبێت. پاشان PHP بازدەدات بۆ کۆتایی؛
elseناپشکنرێت.
Rules to remember
یاساکانی بیرت بێت
- You can write as many
elseifparts as you need. - PHP checks the conditions in order, from top to bottom. It runs the block of the first true condition and then jumps to the end. The other conditions are not even checked.
- The
elsepart is optional. If there is noelseand no condition is true, nothing runs. elsemust come last, and there can be only one.- PHP also accepts
else if(two words). It works the same way here. The lab heading wrote else if while its code usedelseif; both are correct.
- دەتوانیت چەندت بوێت بەشی
elseifبنووسیت. - PHP بە ڕیز، لە سەرەوە بۆ خوارەوە دەپشکنێت. بلۆکی یەکەم ڕاست جێبەجێ دەکات و پاشان بازدەدات بۆ کۆتایی. تر تەنانەت ناپشکنرێن.
- بەشی
elseئارەزوومەندانەیە. ئەگەرelseنەبێت و هیچ ڕاست نەبێت، هیچ شتێک جێبەجێ نابێت. elseدەبێت لە کۆتاییدا بێت و تەنها یەکelseدەبێت.- PHP
else ifیش (دوو وشە) وەردەگرێت و لێرەدا هەمان کار دەکات. سەردێڕی تاقیگەکە else ifی نووسیبوو و کۆدەکەیelseifی بەکارهێنابوو؛ هەردووکیان دروستن.
if...elseif...else: more than two pathsif...elseif...else: زیاتر لە دوو ڕێگا
A longer example: from a mark to a gradeنموونەیەکی درێژتر: لە نمرەوە بۆ پلە
Kurdish universities give grades like Excellent, Very good, Good, Medium, Pass and Fail. Here Aram's mark is 72:
زانکۆکانی کوردستان پلەی وەک نایاب، زۆر باش، باش، ناوەند، پەسەند و کەوتوو دەدەن. لێرەدا نمرەی ئارام 72ـە:
<?php
$mark = 72;
if ($mark >= 90) {
echo "Excellent";
} elseif ($mark >= 80) {
echo "Very good";
} elseif ($mark >= 70) {
echo "Good";
} elseif ($mark >= 60) {
echo "Medium";
} elseif ($mark >= 50) {
echo "Pass";
} else {
echo "Fail";
}
?>Good
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 4
72 >= 90? No.
72 >= 90؟ نەخێر.- Lineدێڕی 6
72 >= 80? No.
72 >= 80؟ نەخێر.- Lineدێڕی 8-9
72 >= 70? Yes. Print Good and stop checking.
72 >= 70؟ بەڵێ. Good چاپ دەکات و پشکنین دەوەستێت.
This works only because the conditions go from the highest mark down. If you write them in the wrong order, the first condition catches marks that belong to a later one:
ئەمە تەنها لەبەر ئەوە کار دەکات کە لە بەرزترین نمرەوە بۆ خوارەوە نووسراون. ئەگەر بە ڕیزبەندییەکی نادروست بیاننووسیت، یەکەم ئەو نمرانەش دەگرێت کە هی دواترن:
<?php
$mark = 95;
if ($mark >= 50) {
echo "Pass";
} elseif ($mark >= 90) {
echo "Excellent"; // never reached: 95 already matched ">= 50"
} else {
echo "Fail";
}
?>Pass
Joining conditions: AND, OR and NOTپێکەوەبەستنی مەرجەکان: AND و OR و NOT
Sometimes one question is not enough. Is the student's mark at least 50 *and** did she attend the exam?* join or reverse conditions. The result is again true or false.
هەندێک جار یەک پرسیار بەس نییە. ئایا نمرەی خوێندکارەکە لانیکەم 50ـە *و** ئایا ئامادەی تاقیکردنەوەکە بووە؟* پێکەوە دەبەستن یان پێچەوانەیان دەکەنەوە. ئەنجامەکە دیسان true یان falseـە.
| Operator | Nameناو | True when…کەی ڕاستە… |
|---|---|---|
&& | AND (also written and)AND «و» (بە andیش دەنووسرێت) | both conditions are trueهەردوو ڕاست بن |
|| | OR (also written or)OR (بە orیش دەنووسرێت) | at least one condition is trueلانیکەم یەکێک لە ڕاست بێت |
! | NOTNOT (پێچەوانەکردنەوە) | the condition is false (it reverses the answer) هەڵە بێت (ئەنجامەکە پێچەوانە دەکاتەوە) |
xor | exclusive OROR ـی تایبەت | exactly one of the two is trueتەنها یەکێک لە دووانەکە ڕاست بێت |
A | B | A && B | A || B | !A |
|---|---|---|---|---|
true | true | true | true | false |
true | false | false | true | false |
false | true | false | true | true |
false | false | false | false | true |
How to create a function, send values in with arguments, and get a result back with return, with a short practice example.
چۆن دروست بکەیت، بە بنێریتە ناوی و بە return ئەنجامێک لێی وەربگریتەوە، لەگەڵ ڕاهێنانێکی کورت.
Plays only the 'logical operators' chapter (1:10:49–1:21:05).
تەنها بەشی پەخش دەبێت (1:10:49 تا 1:21:05).
Joining conditions: AND, OR and NOTپێکەوەبەستنی مەرجەکان: AND و OR و NOT
AND: &&AND (و): &&
With &&, the block runs only if both conditions are true. In this lecture example, the variables are created in one PHP block and used in a second PHP block of the same file. This works: a keeps its value in all PHP blocks of one page.
بە &&، بلۆکەکە تەنها کاتێک جێبەجێ دەبێت کە هەردوو ڕاست بن. لەم نموونەیەی وانەکەدا، لە بلۆکێکی PHP دروست دەکرێن و لە بلۆکێکی تری PHP ـی هەمان بەکاردەهێنرێن. ئەمە کار دەکات: لە هەموو بلۆکەکانی PHP ـی یەک پەڕەدا دەپارێزێت.
<?php
$a = 5;
$b = 4;
?>
<?php
$c = 20;
$d = 1;
if (($a > $b) && ($c > $d)) {
echo "a is larger than b AND ";
echo "c is larger than d ";
}
?>a is larger than b AND c is larger than d
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 1-4
First PHP block: create
$aand$b.یەکەم بلۆکی PHP:
$aو$bدروست دەکات.- Lineدێڕی 5-8
Second PHP block:
$aand$bstill exist here.دووەم بلۆکی PHP:
$aو$bهێشتا لێرە هەن.- Lineدێڕی 9
5 > 4 is true and 20 > 1 is true, so the whole condition is true.
5 > 4ڕاستە و20 > 1ڕاستە، بۆیە هەموو ڕاستە.- Lineدێڕی 10-11
Two
echostatements: this is why braces are needed.دوو
echo: لەبەر ئەمە کەوانەی لوولی پێویستە.
The lab shows that you can also write it without the inner parentheses:
تاقیگەکە پیشانی دەدات کە دەتوانیت بەبێ کەوانە ناوەکییەکانیش بینووسیت:
<?php
$a = 5;
$b = 4;
$c = 20;
$d = 1;
if ($a > $b && $c > $d) {
echo "a is larger than b AND ";
echo "c is larger than d ";
}
?>a is larger than b AND c is larger than d
Both versions give the same result. The reason is : PHP always does comparisons like > before && and ||, just as in mathematics multiplication comes before addition. The extra parentheses are still useful: they make the code easier to read.
هەردوو وەشانەکە هەمان ئەنجام دەدەن. هۆکارەکەی : PHP هەمیشە بەراوردکردنی وەک > پێش && و || ئەنجام دەدات، هەروەک چۆن لە بیرکاریدا لێکدان پێش کۆکردنەوە دێت. کەوانە زیادەکان هێشتا بەسوودن: کۆدەکە ئاسانتر دەخوێنرێتەوە.
Joining conditions: AND, OR and NOTپێکەوەبەستنی مەرجەکان: AND و OR و NOT
OR: ||OR (یان): ||
With ||, the block runs if at least one condition is true. In this example only the first condition is true (5 > 4). The second one is false (1 > 20), but that is enough for OR.
بە ||، بلۆکەکە جێبەجێ دەبێت ئەگەر لانیکەم یەکێک لە ڕاست بێت. لەم نموونەیەدا تەنها یەکەم ڕاستە (5 > 4). دووەمیان هەڵەیە (1 > 20)، بەڵام بۆ OR ئەمە بەسە.
<?php
$a = 5;
$b = 4;
$c = 1;
$d = 20;
if (($a > $b) || ($c > $d)) {
echo "At least one condition is true: ";
echo "a is larger than b OR c is larger than d";
}
?>At least one condition is true: a is larger than b OR c is larger than d
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 7
true || false → true
ئەنجامی
true || falseدەبێتەtrue- Lineدێڕی 8-9
A message that tells the truth: at least one condition is true.
پەیامێک کە ڕاستی دەڵێت: لانیکەم یەکێک لە ڕاستە.
Joining conditions: AND, OR and NOTپێکەوەبەستنی مەرجەکان: AND و OR و NOT
NOT: !NOT (پێچەوانە): !
! reverses a condition: !true is false and !false is true. It is often used with isset(), in the next section: !isset($a) means "$a is NOT set".
! پێچەوانە دەکاتەوە: !true دەبێتە false و !false دەبێتە true. زۆرجار لەگەڵ isset() بەکاردێت، لە بەشی داهاتوودا: !isset($a) واتە «هیچ بۆ $a دانەنراوە».
<?php
var_dump(true && false); // AND: both must be true
var_dump(true || false); // OR: at least one must be true
var_dump(!true); // NOT: turns true into false
?>bool(false) bool(true) bool(false)
HTML sent to the browserئەو HTMLـەی دەنێردرێت بۆ تۆڕگەڕ
bool(false)
bool(true)
bool(false)Is the variable set? isset() and unset()ئایا گۆڕاوەکە نرخی هەیە؟ isset() و unset()
isset() checks a . It returns true if the variable exists and is not null. unset() destroys a variable, so after unset($a) the variable no longer exists.
isset() دەپشکنێت. ئەگەر هەبێت و null نەبێت true دەگەڕێنێتەوە. unset() دەسڕێتەوە، بۆیە دوای unset($a) ئیتر بوونی نییە.
A typical use: give a default value if a variable is not set. In the lecture example, $a was set to 5 in an earlier PHP block, so the if body does not run:
بەکارهێنانێکی باو: ئەگەر هیچ نەبوو، بنەڕەتیی پێ بدە. لە نموونەکەی وانەکەدا، $a لە بلۆکێکی پێشووی PHPـدا کرابوو بە 5، بۆیە ناوەڕۆکی if جێبەجێ نابێت:
<?php
$a = 5;
$b = 4;
?>
<?php
if (!isset($a)) {
$a = 100;
}
echo $a;
?>5
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 6
isset($a)is true (a is 5), so!isset($a)is false.isset($a)ڕاستە (a یەکسانە بە 5)، بۆیە!isset($a)هەڵەیە.- Lineدێڕی 7
Skipped.
تێدەپەڕێنرێت.
- Lineدێڕی 9
$akeeps its old value.$aکۆنەکەی دەپارێزێت.
Now the same code, but unset($a) destroys the variable first. This time !isset($a) is true, so $a gets the value 100:
ئێستا هەمان کۆد، بەڵام سەرەتا unset($a) دەسڕێتەوە. ئەم جارە !isset($a) ڕاستە، بۆیە $a 100 وەردەگرێت:
<?php
$a = 5;
$b = 4;
?>
<?php
unset($a);
if (!isset($a)) {
$a = 100;
}
echo $a;
?>100
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 6
"
unset(var_name)unsets a variable that was set."$ano longer exists.«
unset(var_name)نرخدار دەسڕێتەوە.» ئیتر$aبوونی نییە.- Lineدێڕی 8-10
!isset($a)is now true, so$a = 100runs.ئێستا
!isset($a)ڕاستە، بۆیە$a = 100جێبەجێ دەبێت.
Be careful: isset() only asks "does the variable exist and is it not null?". An empty string "" and the number 0 are values:
ئاگاداربە: isset() تەنها دەپرسێت «ئایا هەیە و null نییە؟». بەتاڵ "" و ژمارەی 0 :
isset() چی دەڵێت؟isset-cases.phpPHPRuns on the serverلەسەر ڕاژەکاری وێب کار دەکات<?php
$name = "Hana";
$empty = "";
$zero = 0;
$nothing = null;
var_dump(isset($name)); // has a value
var_dump(isset($empty)); // an empty string is still a value
var_dump(isset($zero)); // 0 is still a value
var_dump(isset($nothing)); // null means "no value"
var_dump(isset($city)); // $city was never created
var_dump(isset($name, $zero)); // true only if ALL are set
?>bool(true) bool(true) bool(true) bool(false) bool(false) bool(true)
HTML sent to the browserئەو HTMLـەی دەنێردرێت بۆ تۆڕگەڕ
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(true)Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 10
: the variable has no value.
: هیچ نییە.
- Lineدێڕی 11
$citywas never created.isset()gives no warning; it simply returnsfalse.$cityهەرگیز دروست نەکراوە.isset()هیچ نادات؛ تەنهاfalseدەگەڕێنێتەوە.- Lineدێڕی 12
With several variables, the answer is true only if all of them are set.
بە چەند ، ئەنجامەکە تەنها کاتێک ڕاستە کە هەموویان هەبێت.
The switch statementڕستەی switch
The is used to perform different actions based on different values. It looks at one value and selects one of many blocks of code to run.
بۆ ئەنجامدانی کاری جیاواز بەپێی جیاواز بەکاردێت. سەیری یەک دەکات و یەکێک لە چەندین هەڵدەبژێرێت بۆ جێبەجێکردن.
switch (n) {
case label1:
code to be executed if n=label1;
break;
case label2:
code to be executed if n=label2;
break;
case label3:
code to be executed if n=label3;
break;
...
default:
code to be executed if n is different from all labels;
}How it works
چۆن کار دەکات
PHP works out the value in
switch ( )once.PHP ناو
switch ( )یەک جار هەژمار دەکات.It compares that value with each , from top to bottom. It uses
==, so"1"matchescase 1:.ئەو یەک لە دوای یەک لەگەڵ بەراورد دەکات، لە سەرەوە بۆ خوارەوە.
==بەکاردەهێنێت، بۆیە"1"لەگەڵcase 1:دەگونجێت.At the first match, PHP starts running the code of that case.
لە یەکەم گونجاندا، PHP دەست دەکات بە جێبەجێکردنی کۆدی ئەو بەشە.
breakends the switch. PHP jumps to the code after the closing}.breakکۆتایی بەswitchدەهێنێت. PHP بازدەدات بۆ ئەو کۆدەی دوای}ـی داخستنە.If no case matches, the runs.
defaultis optional; without it, nothing runs.ئەگەر هیچ بەشێک نەگونجا، جێبەجێ دەبێت.
defaultئارەزوومەندانەیە؛ ئەگەر نەبێت، هیچ شتێک جێبەجێ نابێت.
A post-office worker in Sulaymaniyah looks at the city on each letter. Erbil letters go into the Erbil box, Duhok letters into the Duhok box, and letters for any other city go into the other box. One value (the city), many possible boxes, and one other box: that is switch with default.
فەرمانبەرێکی پۆستەخانە لە سلێمانی سەیری ناوی شارەکە لەسەر هەر نامەیەک دەکات. نامەی هەولێر دەچێتە سندووقی هەولێر، نامەی دهۆک دەچێتە سندووقی دهۆک و نامەی هەر شارێکی تر دەچێتە سندووقی تر. یەک (شارەکە)، چەندین سندووقی گونجاو و یەک سندووقی تر: ئەمە switchـە لەگەڵ default.
Where the analogy stops workingسنووری ئەم نموونەیە
A careful worker puts each letter in one box only. PHP is less careful: if you forget break, it keeps going into the next boxes too (see fall-through below).
فەرمانبەرێکی وریا هەر نامەیەک تەنها دەخاتە یەک سندووق. PHP ئەوەندە وریا نییە: ئەگەر break لەبیر بکەیت، دەچێتە ناو سندووقەکانی دواتریش (سەیری لە خوارەوە بکە).
Shows switch with case, default and break, what happens when break is missing (fall-through), and that switch compares values loosely.
لەگەڵ case، default و break پیشان دەدات، چی ڕوودەدات کاتێک break نییە () و ئەوەی switch بە شێوەی ناتوند بەراورد دەکات.
Watch 0:00–4:10: case, default, break, fall-through, loose comparison.
لە 0:00 تا 4:10 سەیر بکە: case، default، break، و بەراوردکردنی ناتوند.
The switch statementڕستەی switch
Examples with numbers and stringsنموونە بە ژمارە و زنجیرەنووسە
Example with numbers
نموونە بە ژمارە
<?php $a = 3; ?>
<?php
switch ($a) {
case 0:
echo "a equals 0";
break;
case 1:
echo "a equals 1";
break;
case 2:
echo "a equals 2";
break;
default:
echo "a is not 0, 1 or 2";
break;
}
?>a is not 0, 1 or 2
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 1
A first PHP block sets
$ato 3.یەکەم بلۆکی PHP
$aدەکات بە 3.- Lineدێڕی 3
The value to test is
$a(3).ئەو دەپشکنرێت
$aـە (3).- Lineدێڕی 4, 7, 10
3 is not 0, 1 or 2, so none of these cases match.
3 نە 0ـە، نە 1، نە 2، بۆیە هیچ کام لەم بەشانە ناگونجێن.
- Lineدێڕی 13-15
So
defaultruns. Itsbreakis harmless but not needed, becausedefaultis the last part.بۆیە
defaultجێبەجێ دەبێت.breakـەکەی زیانی نییە بەڵام پێویستیش نییە، چونکەdefaultدوایین بەشە.
Example with strings
نموونە بە زنجیرەنووسە
<?php
$favcolor = "red";
switch ($favcolor) {
case "red":
echo "Your favorite color is red!";
break;
case "blue":
echo "Your favorite color is blue!";
break;
case "green":
echo "Your favorite color is green!";
break;
default:
echo "Your favorite color is neither red, blue, nor green!";
}
?>Your favorite color is red!
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 5
"red" == "red": match. The message is printed…"red" == "red": گونجا. پەیامەکە چاپ دەبێت…- Lineدێڕی 7
…and
breakleaves the switch, so blue, green and default are not run.…و
breakلەswitchدەردەچێت، بۆیە blue و green و default جێبەجێ ناکرێن.- Lineدێڕی 14-15
No
breakis needed after the last part.دوای دوایین بەش پێویست بە
breakناکات.
The switch statementڕستەی switch
break and fall-throughbreak و تێپەڕین
break is what stops a switch. A case without break does not stop. PHP simply continues with the code of the next case, without checking its label. This is called . These two examples come from a student's practice notes:
ئەوەی switch ڕادەگرێت breakـە. بەشێکی بێ break ناوەستێت. PHP بە سادەیی بەردەوام دەبێت لەگەڵ کۆدی بەشی دواتر، بەبێ ئەوەی سەیری ناونیشانەکەی بکات. ئەمە پێی دەوترێت . ئەم دوو نموونەیە لە تێبینییەکانی ڕاهێنانی خوێندکارێکەوە هاتوون:
breakێک لە دوای یەکswitch-breaks.phpPHPRuns on the serverلەسەر ڕاژەکاری وێب کار دەکات<!DOCTYPE html>
<html>
<body>
<?php
$x = 5;
switch ($x) {
case 1:
echo "1";
case 5:
echo "5";
break; break; break; break;
default:
echo "Default";
break; break; break;
}
echo "<br />" . $x;
?>
</body>
</html>5 5
HTML sent to the browserئەو HTMLـەی دەنێردرێت بۆ تۆڕگەڕ
<!DOCTYPE html>
<html>
<body>
5<br />5
</body>
</html>Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 7
$xis 5, so PHP jumps tocase 5.case 1is skipped.$xیەکسانە بە 5، بۆیە PHP بازدەدات بۆcase 5.case 1تێدەپەڕێنرێت.- Lineدێڕی 11
Prints
5.5چاپ دەکات.- Lineدێڕی 12
Four
break;in a row are legal. The first one ends the switch; the others are never reached and do nothing.چوار
break;لە دوای یەک ڕێگەپێدراون. یەکەمیان کۆتایی بەswitchدەهێنێت؛ ئەوانی تر هەرگیز ناگەنێ و هیچ ناکەن.- Lineدێڕی 13-15
defaultis not run.defaultجێبەجێ نابێت.- Lineدێڕی 18
After the switch: a line break and the value of
$x.دوای
switch: دێڕێکی نوێ و$x.
case 1 in this code has no break. With $x = 5 that does not matter. But change $x to 1 and watch what happens:
لەم کۆدەدا case 1 هیچ breakـی نییە. بە $x = 5 ئەمە گرنگ نییە. بەڵام $x بگۆڕە بۆ 1 و سەیری ئەوە بکە کە ڕوودەدات:
case 1دا هیچ break نییەswitch-fallthrough.phpPHPRuns on the serverلەسەر ڕاژەکاری وێب کار دەکات<?php
$x = 1;
switch ($x) {
case 1:
echo "1"; // no break here...
case 5:
echo "5"; // ...so PHP falls into this case too
break;
default:
echo "Default";
}
echo "<br />" . $x;
?>15 1
HTML sent to the browserئەو HTMLـەی دەنێردرێت بۆ تۆڕگەڕ
15<br />1Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 5
Prints
1. There is nobreakafter it…1چاپ دەکات. دوای ئەوە هیچbreakنییە…- Lineدێڕی 7
…so PHP falls into
case 5and prints5too. It does not check whether$xis 5.…بۆیە PHP دەچێتە ناو
case 5و5یش چاپ دەکات. ناپشکنێت کە ئایا$xیەکسانە بە 5.- Lineدێڕی 8
This
breakfinally stops the switch.ئەم
breakـە لە کۆتاییداswitchڕادەگرێت.
break ends the switch. Without it, PHP falls through into the next case.break کۆتایی بە switch دەهێنێت. بەبێ ئەو، ڕوودەدات و PHP دەچێتە ناو بەشی دواتر.CêITFall-through is usually a , so put break at the end of every case. But it can also be used on purpose, when several values need the same code. In the Kurdistan Region the weekend is Friday and Saturday:
زۆرجار ، بۆیە لە کۆتایی هەموو بەشێکدا break دابنێ. بەڵام دەکرێت بە ئەنقەستیش بەکاربهێنرێت، کاتێک چەند پێویستیان بە هەمان کۆدە. لە هەرێمی کوردستان پشووی کۆتایی هەفتە هەینی و شەممەیە:
<?php
$day = "Saturday";
switch ($day) {
case "Friday":
case "Saturday":
echo "$day is a weekend day.";
break;
default:
echo "$day is a working day.";
}
?>Saturday is a weekend day.
Explain the codeڕوونکردنەوەی کۆدەکە
- Lineدێڕی 5-6
Empty
case "Friday":falls through tocase "Saturday":. Both values run the same code.case "Friday":ی بەتاڵ تێدەپەڕێت بۆcase "Saturday":. هەردوو هەمان کۆد جێبەجێ دەکەن.
The switch statementڕستەی switch
switch compares looselyswitch بە شێوەی ناتوند بەراورد دەکات
switch compares with ==, not ===. So a "1" (for example, from a form) matches case 1: (an ). Usually this is helpful, but remember it when types matter.
switch بە == بەراورد دەکات، نەک ===. بۆیە "1" (بۆ نموونە لە ) لەگەڵ case 1: () دەگونجێت. زۆرجار ئەمە بەسوودە، بەڵام کاتێک جۆر گرنگە لە بیرت بێت.
<?php
$input = "1"; // a string, for example from a form
switch ($input) {
case 1: // an integer
echo "Matched case 1";
break;
default:
echo "No match";
}
?>Matched case 1
if...else or switch: which one?if...else یان switch: کامیان؟
A common exam question is: "When should you use if-else and when switch?" The main difference is how they test conditions and the syntax used to write them.
پرسیارێکی باوی تاقیکردنەوە ئەمەیە: «کەی if-else بەکاربهێنین و کەی switch؟» جیاوازییە سەرەکییەکە لە چۆنیەتی پشکنینی و ئەو کە پێی دەنووسرێن.
| Questionپرسیار | if...elseif...else | switch |
|---|---|---|
| What it testsچی دەپشکنێت | any condition: ranges ($mark >= 50), &&, ||, function results…هەر : مەودا ($mark >= 50)، &&، ||، ئەنجامی … | only equality of one value with fixed labelsتەنها یەکسانبوونی یەک لەگەڵ چەند ناونیشانێکی جێگیر |
| Comparisonبەراوردکردن | whatever you write: ==, ===, <, …هەرچی بینووسیت: ==، ===، <، … | always loose ==هەمیشە ==ی ناتوند |
| Best forباشترینە بۆ | ranges and combined conditionsمەوداکان و تێکەڵ | one variable checked against many fixed values (menu choice, day name, colour)یەک کە لەگەڵ چەندین جێگیر بەراورد دەکرێت (هەڵبژاردەی لیست، ناوی ڕۆژ، ڕەنگ) |
| Dangerمەترسی | wrong order of elseif conditionsڕیزبەندیی نادروستی elseif | forgetting break (fall-through)لەبیرکردنی break () |
Extra: short ways to decideزیادە: ڕێگای کورت بۆ بڕیاردان
The course does not teach the following tools, but you will see them in modern PHP code. Learn if, else and switch first; these are shortcuts.
کۆرسەکە ئەم ئامرازانەی خوارەوە فێر ناکات، بەڵام لە کۆدی PHP ـی نوێدا دەیانبینیت. سەرەتا if و else و switch فێربە؛ ئەمانە ڕێگای کورتن.
Common mistakesهەڵە باوەکان
These mistakes appear again and again in beginners' code. The first one even comes from the course slides. Learn to recognise them, and you will find your own much faster.
ئەم هەڵانە دووبارە و دووبارە لە کۆدی فێرخوازە نوێیەکاندا دەبینرێن. یەکەمیان تەنانەت لە کۆرسەکەوە هاتووە. فێربە بیانناسیتەوە، ئەوکات خۆت زۆر خێراتر دەدۆزیتەوە.
Common mistakesهەڵە باوەکان
Curly quotes copied from slidesجووتەگوتەی خوار کە لە سلایدەوە کۆپی کراوە
Most code in the original lecture and lab used curly "smart" quotes (“ ”), which presentation programs insert automatically. PHP only understands straight quotes (" and '). If you type or paste the code with curly quotes, you get a :
زۆربەی کۆدەکانی وانە و تاقیگە سەرەکییەکە جووتەگوتەی خوار (“ ”)ی بەکارهێنابوو، کە خۆکارانە دایدەنێن. PHP تەنها جووتەگوتەی ئاسایی (" و ') دەناسێتەوە. ئەگەر کۆدەکە بە جووتەگوتەی خوار بنووسیت یان بیلکێنیت، وەردەگریت:
<?php
$a = 4;
$b = 3;
if ($a > $b) {
echo “a is larger than b”;
}
?>Parse error: syntax error, unexpected identifier "is", expecting "," or ";" in C:\xampp\htdocs\conditions\curly.php on line 5
Common mistakesهەڵە باوەکان
= instead of === لە جیاتی ==
One = stores a value. Two == compare. If you write = in a condition, PHP stores the value and then uses it as the answer. Any number except 0 counts as true:
یەک = هەڵدەگرێت. دوو == بەراورد دەکەن. ئەگەر لە = بنووسیت، PHP هەڵدەگرێت و پاشان وەک ئەنجامی بەکاری دەهێنێت. هەموو ژمارەیەک جگە لە 0 وەک ڕاست دادەنرێت:
<?php
$a = 3;
if ($a = 5) { // mistake: = stores 5 in $a
echo "a is 5<br>";
}
echo "Now a is $a";
?>a is 5 Now a is 5
HTML sent to the browserئەو HTMLـەی دەنێردرێت بۆ تۆڕگەڕ
a is 5<br>Now a is 5Common mistakesهەڵە باوەکان
A semicolon after the conditionخاڵبۆر لە دوای مەرجەکە
if (...); ends the if at the . The block after it is then an ordinary block that always runs:
if (...); لە کۆتایی بە if دەهێنێت. ئەو بلۆکەی دوای ئەوە دێت ئیتر بلۆکێکی ئاساییە و هەمیشە جێبەجێ دەبێت:
<?php
$a = 1;
$b = 5;
if ($a > $b); { // mistake: the ; ends the if here
echo "a is larger than b";
}
?>a is larger than b
Wrong! 1 is not larger than 5.
هەڵەیە! 1 لە 5 گەورەتر نییە.
Common mistakesهەڵە باوەکان
Other mistakes from this lectureهەڵەکانی تری ئەم وانەیە
- Two statements without braces – only the first one belongs to the
if. See the trap. - Wrong order of
elseifconditions – a wide condition first hides the narrow ones. See the grade example. - Forgetting
breakin a switch – PHP falls through into the next case. See fall-through. - Comparing text with different capital letters –
"No" == "no"is false. See comparing text. - Using
continueto leave a switch – usebreak. See the warning. - Forgetting that
==ignores type –"5" == 5is true. Use===when the type matters.
- دوو بەبێ کەوانەی لوولی – تەنها یەکەمیان سەر بە
ifـە. سەیری تەڵەکە بکە. - ڕیزبەندیی نادروستی
elseif– فراوان لە پێشەوە تەسکەکان دەشارێتەوە. سەیری نموونەی پلە بکە. - لەبیرکردنی
breakلەswitchدا – PHP تێدەپەڕێت بۆ ناو بەشی دواتر. سەیری نموونەکە بکە. - بەراوردکردنی دەق بە پیتی گەورە و بچووکی جیاواز –
"No" == "no"هەڵەیە. سەیری بەراوردکردنی دەق بکە. - بەکارهێنانی
continueبۆ دەرچوون لەswitch–breakبەکاربهێنە. سەیری نموونەیcontinueبکە. - لەبیرکردنی ئەوەی
==گوێ بە جۆر نادات –"5" == 5ڕاستە. کاتێک جۆر گرنگە===بەکاربهێنە.
Lab exercisesڕاهێنانەکانی تاقیگە
These are the tasks of Lab 3 (the conditional statements lab), rewritten clearly, plus two questions from the course notes. Try each one yourself before you open the answer.
ئەمانە ئەرکەکانی تاقیگەی 3ن (تاقیگەی )، بە ڕوونی دووبارە نووسراونەتەوە، لەگەڵ دوو پرسیار لە تێبینییەکانی کۆرسەکە. پێش کردنەوەی چارەسەرەکە، هەر یەکێکیان خۆت هەوڵ بدە.
Start XAMPP and make sure Apache is running.
XAMPP دەست پێبکە و دڵنیابە Apache کار دەکات.
In the
htdocsfolder, create a new project folder namedconditions. The lab asked for a new PHP project in NetBeans; any editor, for example VS Code, is fine.لە
htdocsدا نوێ بە ناویconditionsدروست بکە. تاقیگەکە داوای پرۆژەیەکی نوێی PHP ـی لە NetBeans کردبوو؛ هەر ، بۆ نموونە VS Code، گونجاوە.Save each example as its own file, for example
example1.php, and open it in the browser athttp://localhost/conditions/example1.php.هەر نموونەیەک وەک جیا پاشەکەوت بکە، بۆ نموونە
example1.phpو لە بیکەرەوە:http://localhost/conditions/example1.php.
Store 10 in $a and 15 in $b. If $a is less than $b, print B is greater than A.
10 لە $a و 15 لە $b هەڵبگرە. ئەگەر $a لە $b بچووکتر بوو، B is greater than A چاپ بکە.
Hintئاماژە
Use < inside the parentheses of if.
لەناو کەوانەکانی ifدا < بەکاربهێنە.
Show answerوەڵامەکە پیشان بدە
<?php
$a = 10;
$b = 15;
if ($a < $b) {
echo "B is greater than A";
}
?>B is greater than A
if...elseStore 3 in $a and 4 in $b. Print a is larger than b if $a is larger; otherwise print a is not larger than b.
3 لە $a و 4 لە $b هەڵبگرە. ئەگەر $a گەورەتر بوو a is larger than b چاپ بکە؛ ئەگینا a is not larger than b چاپ بکە.
Show answerوەڵامەکە پیشان بدە
<?php
$a = 3;
$b = 4;
if ($a > $b) {
echo "a is larger than b";
} else {
echo "a is not larger than b";
}
?>a is not larger than b
Store 4 in both $a and $b. Print whether $a is larger than, equal to, or smaller than $b. Then try other values to reach every branch.
4 لە هەردوو $a و $b هەڵبگرە. چاپ بکە کە ئایا $a لە $b گەورەترە، یەکسانە پێی، یان بچووکترە. پاشان تر تاقی بکەرەوە تا بگەیتە هەموو بەشەکان.
Show answerوەڵامەکە پیشان بدە
<?php
$a = 4;
$b = 4;
if ($a > $b) {
echo "a is larger than b";
} elseif ($a == $b) {
echo "a is equal to b";
} else {
echo "a is smaller than b";
}
?>a is equal to b
With $a = 5, $b = 4 you get a is larger than b; with $a = 3, $b = 4 you get a is smaller than b. (The lab printed a equals to b; correct English is a is equal to b.)
بە $a = 5, $b = 4 دەگەیتە a is larger than b؛ بە $a = 3, $b = 4 دەگەیتە a is smaller than b. (تاقیگەکە a equals to bی چاپ دەکرد؛ ئینگلیزیی دروست a is equal to bـە.)
With $a = 5, $b = 4, $c = 20, $d = 1, print a is larger than b AND c is larger than d only if both comparisons are true. Write it once with extra parentheses and once without.
بە $a = 5, $b = 4, $c = 20, $d = 1، a is larger than b AND c is larger than d تەنها کاتێک چاپ بکە کە هەردوو بەراوردکردنەکە ڕاست بن. جارێک بە کەوانەی زیادەوە و جارێک بەبێ ئەوان بینووسە.
Show answerوەڵامەکە پیشان بدە
<?php
$a = 5;
$b = 4;
$c = 20;
$d = 1;
if ($a > $b && $c > $d) {
echo "a is larger than b AND ";
echo "c is larger than d ";
}
?>a is larger than b AND c is larger than d
The version with (($a > $b) && ($c > $d)) gives exactly the same output, because comparisons are done before &&.
وەشانی (($a > $b) && ($c > $d)) ڕێک هەمان دەدات، چونکە بەراوردکردن پێش && ئەنجام دەدرێت.
With $a = 5, $b = 4, $c = 1, $d = 20, print a message if $a > $b or $c > $d. Which of the two conditions is true?
بە $a = 5, $b = 4, $c = 1, $d = 20، ئەگەر $a > $b یان $c > $d ڕاست بوو پەیامێک چاپ بکە. کام لەو دوو ڕاستە؟
Show answerوەڵامەکە پیشان بدە
<?php
$a = 5;
$b = 4;
$c = 1;
$d = 20;
if (($a > $b) || ($c > $d)) {
echo "At least one condition is true: ";
echo "a is larger than b OR c is larger than d";
}
?>At least one condition is true: a is larger than b OR c is larger than d
Only $a > $b is true; $c > $d (1 > 20) is false. OR needs just one true condition, so the message is printed.
تەنها $a > $b ڕاستە؛ $c > $d (1 > 20) هەڵەیە. OR تەنها یەک ڕاستی پێویستە، بۆیە پەیامەکە چاپ دەبێت.
When should you use if-else, and when switch? Give one example of each.
کەی if-else بەکاردەهێنیت و کەی switch؟ بۆ هەر یەکێکیان نموونەیەک بهێنەوە.
Show answerوەڵامەکە پیشان بدە
switch tests only equality of one value with fixed labels, using loose ==. Use it for one variable checked against many fixed values, for example the day of the week. if...else can test any condition, including ranges and &&/||. Use it for example to turn a mark into a grade ($mark >= 90). The rule "same data type → switch" from the notes is not correct (see if or switch).
switch تەنها یەکسانبوونی یەک لەگەڵ ناونیشانی جێگیر دەپشکنێت، بە ==ی ناتوند. بۆ یەک بەکاری بهێنە کە لەگەڵ چەندین جێگیر بەراورد دەکرێت، بۆ نموونە ڕۆژی هەفتە. if...else دەتوانێت هەر بپشکنێت، لەوانە مەودا و &&/||. بۆ نموونە بۆ گۆڕینی نمرە بۆ پلە بەکاری بهێنە ($mark >= 90). یاسای «هەمان ← switch» لە تێبینییەکاندا دروست نییە (سەیری if یان switch بکە).
A program checks if ($answer == "No"). The user types no. Why does the program go to the else part, and how do you fix it?
if ($answer == "No") دەپشکنێت. no دەنووسێت. بۆچی دەچێتە بەشی else و چۆن چاکی دەکەیت؟
Show answerوەڵامەکە پیشان بدە
String comparison with == is case-sensitive, so "no" == "No" is false. Fix: compare strtolower($answer) == "no", or use strcasecmp($answer, "No") === 0.
بەراوردکردنی بە == ، بۆیە "no" == "No" هەڵەیە. چارەسەر: strtolower($answer) == "no" بەراورد بکە، یان strcasecmp($answer, "No") === 0 بەکاربهێنە.
Store a day name in $day. Using switch, print weekend day for Friday and Saturday and working day for every other day. Use one shared block for the two weekend days.
ناوی ڕۆژێک لە $day هەڵبگرە. بە switch، بۆ هەینی و شەممە weekend day و بۆ هەموو ڕۆژەکانی تر working day چاپ بکە. بۆ دوو ڕۆژی پشووەکە یەک بلۆکی هاوبەش بەکاربهێنە.
Hintئاماژە
Write two case lines one under the other, with no code between them.
دوو دێڕی case لە ژێر یەکتری بنووسە، بێ کۆد لە نێوانیاندا.
Show answerوەڵامەکە پیشان بدە
<?php
$day = "Saturday";
switch ($day) {
case "Friday":
case "Saturday":
echo "$day is a weekend day.";
break;
default:
echo "$day is a working day.";
}
?>Saturday is a weekend day.
date('D') gives today's day as three English letters: Mon, Tue, … Fri, Sat, Sun. Write a page that prints Have a nice weekend! on Friday, Have a nice Saturday! on Saturday and Have a nice day! on every other day. Kurdistan's clock is three hours ahead of UTC, so first set the time zone with date_default_timezone_set('Asia/Baghdad').
date('D') ڕۆژی ئەمڕۆ بە سێ پیتی ئینگلیزی دەدات: Mon، Tue، … Fri، Sat، Sun. لاپەڕەیەک بنووسە کە ڕۆژی هەینی Have a nice weekend!، ڕۆژی شەممە Have a nice Saturday! و ڕۆژەکانی تر Have a nice day! چاپ بکات. کاتژمێری کوردستان سێ کاتژمێر لە UTC لە پێشترە، بۆیە سەرەتا بە date_default_timezone_set('Asia/Baghdad') دابنێ.
Hintئاماژە
Use if … elseif … else and compare $d with 'Fri' and 'Sat' (straight quotes).
if … elseif … else بەکار بهێنە و $d لەگەڵ 'Fri' و 'Sat' بەراورد بکە (جووتەگوتەی ڕاست).
Show answerوەڵامەکە پیشان بدە
<?php
date_default_timezone_set('Asia/Baghdad'); // Kurdistan time (UTC+3)
$d = date('D'); // Mon, Tue, ..., Sun
if ($d == 'Fri') {
echo "Have a nice weekend!";
} elseif ($d == 'Sat') {
echo "Have a nice Saturday!";
} else {
echo "Have a nice day!";
}
?>Have a nice day!
Real output, PHP 8.2, run on Sunday 25 October 2026. On a Friday the page says Have a nice weekend!, on a Saturday Have a nice Saturday!.
ڕاستەقینە، PHP 8.2، ڕۆژی یەکشەممە 25ی تشرینی یەکەمی 2026. ڕۆژی هەینی لاپەڕەکە Have a nice weekend! دەڵێت و ڕۆژی شەممە Have a nice Saturday!.
Why the time zone? Without it PHP uses the server's setting, which is often UTC. At 01:30 on Friday night in Erbil it is still 22:30 on Thursday in UTC, so the page would wrongly say Have a nice day! (we tested both zones). date() always gives English day names, whatever the language of the server.
بۆچی ؟ بەبێ ئەو، PHP بەکار دەهێنێت، کە زۆرجار UTCـە. کاتژمێر 01:30ی شەوی هەینی لە هەولێر، لە UTC هێشتا کاتژمێر 22:30ی پێنجشەممەیە، بۆیە لاپەڕەکە بە هەڵە دەڵێت Have a nice day! (هەردوو ناوچەکەمان تاقی کردەوە). date() هەمیشە ناوی ڕۆژەکان بە ئینگلیزی دەدات، زمانی هەرچی بێت.
Summary and reviewپوختە و پێداچوونەوە
- A is an expression whose answer is
trueorfalse. It is built with comparison operators (>,>=,<,<=,==,!=,===,!==) and joined with&&,||and!. ifruns a block only when its condition is true. Without braces, it controls only one statement.if...elsealways runs exactly one of two blocks.if...elseif...elsechecks conditions from top to bottom and runs only the first true one.isset()is true when a variable exists and is notnull;unset()destroys a variable.switchcompares one value with manycaselabels (using==).breakends it; withoutbreak, PHP falls through.defaultruns when nothing matches.- String comparison is case-sensitive. Code must use straight quotes.
- کە وەڵامەکەی
trueیانfalseـە. بە (>،>=،<،<=،==،!=،===،!==) دروست دەکرێت و بە&&و||و!پێکەوە دەبەسترێن. ifتەنها کاتێک بلۆکێک جێبەجێ دەکات کە ڕاست بێت. بەبێ کەوانەی لوولی، تەنها یەک کۆنترۆڵ دەکات.if...elseهەمیشە ڕێک یەکێک لە دوو بلۆک جێبەجێ دەکات.if...elseif...elseلە سەرەوە بۆ خوارەوە دەپشکنێت و تەنها یەکەم ڕاست جێبەجێ دەکات.isset()ڕاستە کاتێک هەبێت وnullنەبێت؛unset()دەسڕێتەوە.switchیەک لەگەڵ چەندینcaseبەراورد دەکات (بە==).breakکۆتایی پێدێنێت؛ بەبێbreak، PHP تێدەپەڕێت.defaultجێبەجێ دەبێت کاتێک هیچ شتێک نەگونجێت.- بەراوردکردنی . کۆد دەبێت جووتەگوتەی ئاسایی بەکاربهێنێت.
What are the four conditional statements in PHP?چوار ڕستە مەرجییەکەی PHP کامانەن؟
if, if...else, if...elseif...else and switch. (PHP 8 also has the match expression.)
if، if...else، if...elseif...else و switch. (PHP 8 matchیشی هەیە.)
When do you need curly braces after if?کەی پێویستت بە کەوانەی لوولی دەبێت لە دوای if؟
When the if must control more than one statement. It is good practice to use them always.
کاتێک if دەبێت زیاتر لە یەک کۆنترۆڵ بکات. باشترە هەمیشە بەکاریان بهێنیت.
$a = 4; $b = 4; Two separate if statements test $a > $b and $a < $b. What is printed, and how do you fix it?$a = 4; $b = 4; دوو ڕستەی ifـی جیا $a > $b و $a < $b دەپشکنن. چی چاپ دەبێت و چۆن چاکی دەکەیت؟
Nothing, because both conditions are false. Use if...elseif...else with an elseif ($a == $b) branch, or an else.
هیچ، چونکە هەردوو هەڵەن. if...elseif...else بەکاربهێنە لەگەڵ بەشی elseif ($a == $b)، یان else.
What is the difference between == and ===?جیاوازیی نێوان == و === چییە؟
== compares values after converting types ("5" == 5 is true). === also requires the same type ("5" === 5 is false).
== دوای بەراورد دەکات ("5" == 5 ڕاستە). === هەمان جۆریشی پێویستە ("5" === 5 هەڵەیە).
What do &&, || and ! do?&& و || و ! چی دەکەن؟
&& is true when both conditions are true; || when at least one is true; ! reverses true and false.
&& ڕاستە کاتێک هەردوو ڕاست بن؛ || کاتێک لانیکەم یەکێکیان ڕاست بێت؛ ! پێچەوانە دەکاتەوە.
What does isset($x) return for $x = 0, for $x = null, and for a variable that was never created?isset($x) چی دەگەڕێنێتەوە بۆ $x = 0، بۆ $x = null و بۆ گۆڕاوێک کە هەرگیز دروست نەکراوە؟
true for 0 (it is a value); false for null; false for a variable that does not exist.
true بۆ 0 ()؛ false بۆ null؛ false بۆ کە بوونی نییە.
What is fall-through in a switch?تێپەڕین لە switchدا چییە؟
When a case has no break, PHP continues into the code of the next case without checking its label.
کاتێک بەشێکی case ـی break نییە، PHP بەردەوام دەبێت بۆ ناو کۆدی بەشی دواتر بەبێ پشکنینی ناونیشانەکەی.
What happens if you write continue inside a switch that is not in a loop?ئەگەر continue لەناو switchێکدا بنووسیت کە لەناو خولدا نییە، چی ڕوودەدات؟
It acts like break, and PHP 7.3+ shows a warning: "continue" targeting switch is equivalent to "break".
وەک break کار دەکات و PHP 7.3+ پیشان دەدات: "continue" targeting switch is equivalent to "break".
Videoڤیدیۆ
Watch a videoسەیری ڤیدیۆیەک بکە
A video that viewers liked a lot and praised in their comments, chosen for this lesson.ڤیدیۆیەک کە بینەران زۆریان پێ خۆش بووە و لە کۆمێنتەکانیاندا ستایشیان کردووە، بۆ ئەم وانەیە هەڵبژێردراوە.
A full beginner lesson on if, else if and else, then switch and PHP 8's match expression, with examples.
وانەیەکی تەواو بۆ سەرەتاییەکان دەربارەی ، else if و else، پاشان و لە 8دا، بە نموونەوە.
Overview: if/else if/else, switch, and match (extra).
تێڕوانینێکی گشتی: if/else if/else، switch و match (زیادە).
Lesson complete!وانەکە تەواو بوو!
Well done. Review the key terms, then go on to the next lesson.دەستخۆش. سەیرێکی زاراوە سەرەکییەکان بکەرەوە، پاشان بڕۆ بۆ وانەی داهاتوو.
Key termsزاراوە سەرەکییەکان
Loops: while, do...while, for, foreach, break and continueخولەکان: while و do...while و for و foreach و break و continue
Related lecturesوانە پەیوەندیدارەکان
References and further readingسەرچاوەکان و خوێندنەوەی زیاتر
This lecture is a first edition. The Kurdish text and terminology are waiting for review by Kurdish IT teachers.ئەم وانەیە چاپی یەکەمە. دەقە کوردییەکە و زاراوەکانی چاوەڕێی پێداچوونەوەی مامۆستایانی کوردی بواری IT ن.