PHP မွာလဲ အျခား Programming Languages ေတြလိုပဲ Operators ေတြရွိပါတယ္။ အဲဒီ Operator ေတြ သံုးၿပီး Data ေတြကို ထိန္းခ်ဳပ္လို႔ ရပါတယ္။ အဲဒီ Operator ေတြကို ေလ့လာမယ္ဆိုရင္ သူ႔သက္ဆိုင္ရာ အလုိက္ အမ်ဳိးအစားေတြ အမ်ားႀကီး ကြဲျပားပါတယ္။ တူရာတူရာ စုထားမယ္ ဆိုရင္ * Arithmetic Operators: အေျခခံ သခ်ၤာဆိုင္ရင္ တြက္ခ်က္မႈမ်ားအတြက္
* Arithmetic Assignment Operators: တန္ဖိုးသတ္မွတ္ေပးဖို႔အတြက္
* Comparison Operators: တန္ဖိုးႏွစ္ခုကို ႏိႈင္းယွဥ္ဖို႔အတြက္
* Error Control Operators: Error ေတြကို ရပ္တန္႔ ထိန္းခ်ဳပ္ႏိုင္ဖို႔အတြက္
* Incrementing/Decrementing Operators: တန္ဖိုးအတိုးအေလ်ာ့ လုပ္ႏိုင္ဖို႔အတြက္
* Logical Operators: ေရြးခ်ယ္ျခင္း ဆိုင္ရာေတြအတြက္
* String Operators: Strings ေတြကို ထိန္းခ်ဳပ္ႏိုင္ဖို႔အတြက္
Arithmetic Operators
ေက်ာင္းမွာ သခ်ၤာတြက္တဲ့အခါ သံုးေနတဲ့ ေပါင္းႏႈတ္ေျမွာက္စား Operators ေတြပဲ ျဖစ္ပါတယ္။
( + ) ဆိုရင္ ေပါင္းလဒ္ျပန္ေပးမယ္
echo 2 + 2; // Outputs 4
( – ) ဆိုရင္ ႏႈတ္လဒ္ ျပန္ေပးမယ္
echo 4 – 2; // Outputs 2
( * ) ဆိုရင္ ေျမာက္လဒ္ ျပန္ေပးမယ္
echo 4 * 2; // Outputs 8
( / ) ဆိုရင္ စားလဒ္ ျပန္ေပးမယ္
echo 8 / 2; // Outputs 4
ဒီေနရာမွာ မွတ္ထားဖို႔ လိုတာကေတာ့ ( /) Operator ျဖစ္ပါတယ္။ စားလို႔ ရလာတဲ့ ရလဒ္က ဒႆမကိန္းေတြ ဆိုရင္ ရလဒ္ကို float နဲ႔ ျပန္ေပး ပါလိမ့္မယ္။ စားလို႔ ျပတ္တာေတြ ဆိုရင္ေတာ့ integer ပဲ ျပန္ေပးမွာ ျဖစ္ပါတယ္။
Modulus Opeator ( % ) ဆိုတာကေတာ့ စားလို႔ ျပတ္မျပတ္ ဆိုတဲ့ အေျဖျပန္ေပးပါလိမ့္မယ္။
echo 7 % 2; // Outputs 1
echo 8 % 2; // Outputs 0
Arithmetic Assignment Operators
PHP အေနနဲ႔ တန္ဖိုးသတ္မွတ္ျခင္းဆိုင္ရာ Operators ေတြကို နည္းလမ္းမ်ဳိးစံုနဲ႔ အေထာက္အပံ့ ေပးပါတယ္။ အဓိက တန္ဖိုးသတ္မွတ္တဲ့ Operator ကေတာ့ ( = ) ျဖစ္ပါတယ္။ အဲဒီ ညီမွ်ျခင္းက တူညီတယ္ဆိုတဲ့ အဓိပၸါယ္မဟုတ္ပါဘူး။ သတ္မွတ္ေပးတာ ျဖစ္ပါတယ္။
$a = 5;
အဲဒီလိုဆိုရင္ $a ဆိုတဲ့ Variable ကို တန္ဖိုး 5 လို႔ သတ္မွတ္လိုက္တာ ျဖစ္ပါတယ္။ $a က 5 နဲ႔ ညီမွ်တာ မဟုတ္ပါဘူး။
အျခား ေပါင္းစပ္ထားတဲ့ Operators ေတြလည္း အမ်ားႀကီး ရွိပါတယ္။ အဲဒီ ေပါင္းစပ္ထားတဲ့ Operators ေတြဟာ တန္ဖိုးသတ္မွတ္ ရံုသာမက အျခား ထပ္တိုး တန္ဖိုးေတြကိုလည္း စြမ္းေဆာင္ေပးႏိုင္ပါတယ္။ အဲဒီ Operators ေတြကို ေလ့လာၾကည့္မယ္ဆိုရင္ Arithmetic Operator နဲ႔ Assignment Operator ကို ေပါင္းစပ္ထားတာ ေတြ႔ရမွာ ျဖစ္ပါတယ္။
<?php
$foo = 2;
$foo += 2; // New value is 4
$foo -= 1; // New value is 3
$foo *= 4; // New value is 12
$foo /= 2; // New value is 6
$foo %= 4; // New value is 2
?>
ဒီေနရာမွာ မွတ္စရာ တစ္ခုရွိပါတယ္။ PHP အေနနဲ႔ တန္ဖိုးကိုသာ သတ္မွတ္ေပးတာ ျဖစ္ပါတယ္။ ေအာ္ရီဂ်င္နယ္ Variable ရဲ႕ တန္ဖိုးကို မထိခိုက္ပါဘူး။ ဥပမာ ၾကည့္မယ္ဆိုရင္
<?php
$foo = 2;
$bar = $foo;
echo $bar; // Outout: 2
$foo += 4; // New value is 6
echo $bar; // Output: 2
?>
အကယ္၍ ကိုယ့္အေနနဲ႔ $bar ကို ေျပာင္းတာနဲ႔ $foo ကိုပါ တစ္ခါတည္း အျပန္အလွန္ ေျပာင္းေစခ်င္ရင္ ( =& ) နဲ႔ သံုးလို႔ရပါတယ္။ အေသ သတ္မွတ္ထားတဲ့ တန္ဖိုးကို Script ထဲမွာ ျပန္ၿပီး တန္ဖိုးေျပာင္းခ်င္တဲ့အခါမွာ သံုးပါတယ္။ ဥပမာ အေနနဲ႔ လူတစ္ေယာက္ရဲ႕ အေျခခံ အခ်က္အလက္ေတြ သိမ္းထားတဲ့ Array တစ္ခု ရွိတယ္ဆိုပါေတာ့။ အဲဒီ အခ်က္အလက္ထဲမွာ အသက္ဆိုတာလည္း ပါေနတယ္။ အဲဒီအသက္ကို နဂိုသတ္မွတ္ထားတုန္းက ၂၃ ႏွစ္၊ အဲဒါကို တစ္ႏွစ္ႀကီးခ်င္တယ္၊ နဂိုတန္ဖိုးကိုလည္း ျပင္ခ်င္တယ္ ဆိုရင္
<?php
$person = array(
'name' => 'Jason',
'age' => 23
);
$age =& $person['age'];
// Output the array before doing anything
print_r($person);
// Birthday! Add a year!
++$age;
// Output the array again to see the change
print_r($person);
?>
Output Result အေနနဲ႔
Array ( [name] => Jason [age] => 23 ) Array ( [name] => Jason [age] => 24 )
ဆိုၿပီး ထြက္လာပါလိမ့္မယ္။
Comparison Operators
ႏႈိင္းယွဥ္ျခင္းဆိုင္ရာ Operator ေတြကိုေတာ့ တန္ဖိုးေတြရဲ႕ တူညီမႈေတြကို တိုင္းတာတဲ့ ေနရာမွာ သံုးပါတယ္။ အဲဒီလို Comparison Operator ေတြက အင္မတန္အသံုးဝင္ပါတယ္။ တန္ဖိုးႏွစ္ခု ၾကားမွာ ႏႈိင္းယွဥ္ဖို႔အတြက္ ေအာက္ေဖာ္ျပပါ Operator ေတြ သံုးလို႔ရပါတယ္။
* ( == ): တန္ဖိုးႏွစ္ခု တူ
* ( === ): တန္ဖိုးႏွစ္ခု တစ္ထပ္တည္း က်
* ( != or <> ): တန္ဖိုးႏွစ္ခု မတူ
* ( !== ): တန္ဖိုးႏွစ္ခု တစ္ထပ္တည္း မက်
* ( > ): တန္ဖိုး (၁) သည္ တန္ဖိုး (၂) ထက္ႀကီးသည္
* ( < ): တန္ဖိုး (၁) သည္ တန္းဖိုး (၂) ထက္ငယ္သည္
* ( <= ): တန္ဖိုး (၁) သည္ တန္ဖိုး (၂) ထက္ငယ္သည္ (သို႔) တူသည္
* ( >= ): တန္ဖိုး (၁) သည္ တန္ဖိုး (၂) ထက္ႀကီးသည္ (သို႔) တူသည္
ဒီေနရာမွာ မွတ္စရာ ရွိတာက ညီမွ်တယ္ ဆိုတာနဲ႔ တစ္ထပ္တည္း က်တယ္ဆိုတာ မတူပါဘူး။ ညီမွ်တယ္ ဆိုတာက တန္ဖိုးျခင္း ညီမညီသာ သိႏိုင္ပါတယ္။ တစ္ထပ္တည္းက်တယ္ ဆိုတာကေတာ့ Variable Type ပါ တူမတူ စစ္ႏုိင္ပါတယ္။ ဥပမာ – FALSE == 0 ဆိုရင္ TRUE ဆိုတဲ့ တန္ဖိုးကို ေပးမွာ ျဖစ္ေပမယ့္၊ FALSE === 0 ဆိုရင္ေတာ့ Variable Type မတူတဲ့အတြက္ FALSE ဆိုၿပီး ျပန္ေပးမွာ ျဖစ္ပါတယ္။
Error Control Operators
PHP အေနနဲ႔ Error ေတြကို မျပေစခ်င္တဲ့အခါ ( @ ) ဆိုတာေလး ထည့္ထားေပးလို႔ရပါတယ္။ အဲဒီလုိ ထည့္ထားျခင္း အားျဖင့္ Error Reporting Level ကို 0 ယာယီထားထားပါတယ္။ အဲဒီလို ထားထားျခင္း အားျဖင့္ Error တက္လာတဲ့အခါ မျပေအာင္ စြမ္းေဆာင္ထားႏုိင္ပါတယ္။
ဥပမာ – ကိုယ့္က တကယ္မရွိတဲ့ ဖိုင္တစ္ခုကို ညႊန္းဆိုထားတယ္ ဆိုပါစို႔၊ (include_once ‘fakefile’; )အဲဒီအခ်ိန္မွာ Error ေတြ ျပလာပါလိမ့္မယ္။
Include Error
အဲဒီလုိ Error မ်ဳိးေတြ မျပခ်င္ဘူးဆိုရင္
<?php
#include_once 'fake_file';
echo 'Text to follow the include.';
?>
Operator ေတြကို Variable ေရွ႕မွာထားတာကို Prepending လို႔ ေခၚပါတယ္။ အဲဒီလိုေရွ႕မွာ ထားျခင္း အားျဖင့္ Operation ကို အရင္လုပ္ ၿပီးမွ Variable ကို Assign လုပ္ဆိုတဲ့ သေဘာသက္ေရာက္ ေစၿပီး Operator ေတြကို ေနာက္မွာ ထားတယ္ဆိုရင္ေတာ့ Postpending လို႔ ေခၚပါတယ္။ Variable ကို အရင္ သတ္မွတ္ ေနာက္မွ Operation လုပ္ဆိုတဲ့ သေဘာ သက္ေရာက္ေစပါတယ္။
အေပၚမွာ ျပထားတဲ့ Program ကို Run ၾကည့္မယ္ဆိုရင္ Error ျပေအာင္ မလုပ္ထားတဲ့အတြက္ Error Line မပါလာေတာ့တာ ေတြ႔ရပါလိမ့္မယ္။
ဒီေနရာမွာ မွတ္ရမွာက အဲဒီလို Error ေဖ်ာက္တာကို အတတ္ႏိုင္ဆံုး မသံုးဖို႔ပါ။ Error Escaping လုပ္တာထက္ Error Catching လုပ္ၿပီး ေျဖရွင္းဖို႔ အေရးႀကီးပါတယ္။ အဲဒီလိုမဟုတ္ပဲ Error Escaping ေတြ လုပ္ေနရင္ ကိုယ့္ Script မွာ မလိုလားအပ္တာေတြ ျဖစ္လာပါလိမ့္မယ္။
Incrementing / Decrementing Operators
တန္ဖိုးတိုးတဲ့ Operator တန္ဖိုးေလ်ာ့တဲ့ Operator ေတြကလည္း အေရးပါပါတယ္။ နဂိုမူလ သတ္မွတ္ထားတဲ့ တန္ဖိုးေတြကို ကိုယ့္ရဲ႕ Script ထဲမွာ တိုးမယ္ ေလ်ာ့မယ္ဆိုရင္ PHP မွာ အလြယ္တကူ သံုးလို႔ရပါတယ္။
တန္ဖိုးတစ္ခုထဲကို တစ္ေပါင္းမယ္ဆိုရင္ (++) ဆိုတဲ့ Operator ကို Variable ရဲ႕ ေရွ႕မွာ ျဖစ္ျဖစ္ ေနာက္မွာ ျဖစ္ျဖစ္ထားၿပီး သံုးႏုိင္ပါတယ္။ တန္ဖိုးထဲက တစ္ ႏႈတ္မယ္ဆိုရင္လည္း ( — ) ဆိုတဲ့ Operator ကို Variable ရဲ႕ ေရွ႕မွာ ျဖစ္ျဖစ္ ေနာက္မွာ ျဖစ္ျဖစ္ ထားၿပီး ႏႈတ္ႏုိင္ပါတယ္။ ေရွ႕မွာ ထားတာနဲ႔ ေနာက္မွာ ထားတာ ကြာျခားခ်က္ကေတာ့ အေပၚမွာ ရွင္းျပခဲ့ၿပီး ျဖစ္ပါတယ္။ Prepending နဲ႔ Postpending ပါပဲ။
<?php
$foo = 5;
++$foo; // New value is 6
$ff++; // New value is 7
--$foo; // New value is 6
$foo--; // New value is 5
$bar = 4;
// Echo a prepending value
echo ++$bar; // Output is 5, new value is 5
// Echo a postpending value
echo $bar++; // Output is 5, New value is 6
?>
Logical Operator
ေရႊးခ်ယ္ခ်င္းဆိုင္ရာ Operator ေတြကိုေတာ့ လက္ေတြ႔ စမ္းသပ္ၾကည့္မွ ထင္သာျမင္သာ ရွိမွာ ျဖစ္ပါတယ္။
AND or &&: ႏွစ္ဖက္လံုးက တူေနရင္ TRUE ဆိုတဲ့ အေျဖျပန္ေပးမယ္၊
OR or || : ႏွစ္ဖက္လံုးမွာ တစ္ခုမဟုတ္ တစ္ခု တူေနရင္ TRUE ျပန္ေပးမယ္၊
XOR: တစ္ခုမွန္ၿပီး တစ္ခုမွားမွ TRUE ျပန္ေပးမယ္၊
! : သူကေတာ့ စစ္ေဆးခ်က္ မမွန္မွ TRUE ေပးမွာ ျဖစ္ပါတယ္။
စမ္းသပ္ၾကည့္မယ္ဆိုရင္
<?php
$foo = true;
$bar = false;
// Print the statement if $foo AND $bar are true
if ($foo && $bar) {
echo 'Both $foo and $bar are true. <br />';
}
// Print the statement if $foo OR $bar is true, but not both
if ($foo || $bar) {
echo 'At lease one of the variables is true. <br />';
}
// Print the statement if $foo OR $bar is true, but not both
if ($foo xor $bar) {
echo 'One variable is true, and one is false. <br />';
}
// Print the statement if $bar is NOT true
if (!$bar) {
echo '$bar is false. <br />';
}
?>
Output အေနနဲ႔
Outout 1
Script မွာ $bar = true လို႔ ေျပာင္းၿပီး Script ကို ျပန္ Run ၾကည့္မယ္ဆိုရင္