Ternary Operator เป็น Operator ที่ใช้ในการตัดสินใจ (Conditional Operator) (แต่ใน php.net จัด Ternary Operator อยู่ในกลุ่ม Comparison Operator) ซึ่งทำหน้าที่เหมือน if...else... แต่ช่วยประหยัดโค๊ดไดมากกว่ามาก
(expr1) ? (expr2) : (expr3)การใช้งานจะมี expression 3 ค่าด้วยกันโดยการทำงานจะตรวจสอบค่าใน expre1 ว่ามีค่าเป็นจริง (true) หรือไม่ ถ้าใช่จะกระทำตาม expr2 หากเป็น false จะกระทำตาม expr3 จะเห็นว่าเหมือนกับ if...else... มาก
แล้วช่วยประหยัดโค๊ดได้อย่างไร ขอยกตัวอย่างที่ผมใช้งาน Ternary Operator บ่อยที่สุดให้ดูแล้วกัน
<?
while($i < 10){
$color = "";
if($i%2){
$color = "#FFFFFF";
}else{
$color = "#AAFFAA";
}
echo "<tr style=\"background-color: ".$color.";\"><td>...</td></tr>";
$i++;
}
?>
ข้างบนเป็น code ที่ใช้ในการสร้าง row ของตารางสลับสีที่สั้นที่สุดที่ใช้ if...else... ทีนี้ลองมาดูในกรณีที่เราใช้ Ternary Operator กัน
<?
while($i < 10){
echo "<tr style=\"".(($i%2)?"#FFFFFF":"#AAFFAA").";\"><td>...</td></tr>";
$i++;
}
?>