อินพุต เอาต์พุต พื้นฐาน

21 December 2016

ในบทนี้ คุณจะได้เรียนรู้การรับค่าและการแสดงผลพื้นฐานในภาษา PHP

ในการเขียนโปรแกรม การติดต่อกับผู้ใช้นั้นเป็นส่วนหนึ่งที่สำคัญ เพื่อการแลกเปลี่ยนข้อมูลระหว่างผู้ใช้กับโปรแกรม ยกตัวอย่างเช่น ในการเข้าสู่ระบบเว็บไซต์ คุณจำเป็นต้องใส่ชื่อผู้ใช้และรหัสผ่าน ซึ่งนี่เรียกว่าการรับค่า และการแสดงผลคือการแสดงผลลัพธ์กลับมายังผู้ในรูปแบบต่างๆ เช่น ข้อความ รูปภาพ และเสียง เป็นต้น

เนื่องจากในบทเรียนของเราเป็นแบบ Console ดังนั้นเราจะพูดเฉพาะเกี่ยวกับการรับค่าบน Command line ทางคีย์บอร์ดและการแสดงผลพื้นฐานโดยการใช้คำสั่ง echo และ print ในภาษา PHP

การรับค่าบน Command line

โดยปกติแล้วการรับค่าในภาษา PHP มักจะเป็นการรับค่าผ่านทาง URL หรือ Query string อย่างไรก็ตามเมื่อเราเขียน Console application เราจึงต้องทำการรับค่าผ่านทาง Command line

<?php

$handle = fopen("php://stdin","r");

echo "What's your name? ";
$line = fgets($handle);
$line = trim($line);

echo "Hello $line!\n";

?>

ในตัวอย่าง เป็นโปรแกรมถามชื่อผู้ใช้ โดยการให้ใส่ชื่อผ่านทางคีย์บอร์ดและแสดงข้อความทักทายผู้ใช้ดังกล่าว

$handle = fopen("php://stdin","r");

เราได้สร้างตัวแปรควบคุมในการอ่านค่าจาก Input stream ในภาษา PHP ด้วยฟังก์ชัน fopen() สำหรับการอ่านค่าจาก Console

$line = fgets($handle);
$line = trim($line);

นี่เป็นคำสั่งในการรับค่ามาไว้ในตัวแปร $line โดยฟังก์ชัน fgets() การรับค่าเสร็จสิ้นเมื่อมีการกดปุ่ม Carrier return หรือ Enter และเราใช้ฟังก์ชัน trim() ในการตัดตัวอักษร \n ที่เกิดในตอนกด Enter ออกไป

What's your name? Mateo
Hello Mateo!

นี่เป็นผลลัพธ์ของโปรแกรม โดยเราได้กรอกชื่อและโปรแกรมแสดงข้อความทักทาย

ต่อไปเป็นตัวอย่างเพิ่มเติม เราจะทำการสร้างฟอร์มสำหรับให้ผู้ใช้ใส่ข้อมูลเพื่อสมัครสมาชิกสำหรับเว็บไซต์

<?php

$handle = fopen ("php://stdin","r");

echo "Create account\n";
echo "Enter name: ";
$name = trim(fgets($handle));
echo "Enter email: ";
$email = trim(fgets($handle));
echo "Create password: ";
$password = trim(fgets($handle));
echo "Do you want to submit? (yes \ no) ";
$submit = trim(fgets($handle));

if ($submit == "yes") {
    echo "\nYour account has been created\n";
    echo "with the following informations.\n";  
    echo "Name:\t$name\n";
    echo "Email:\t$email\n";
    echo "Password:\t$password\n";
} else {
    echo "The action was canceled.\n";
}

?>

ในตัวอย่าง เป็นแบบฟอร์มสำหรับสมัครสมาชิกในภาษา PHP โดยมีการถามให้ผู้ใช้ใส่ชื่อ อีเมล และตั้งรหัสผ่าน และในตอนท้ายถามการยืนยันว่าต้องการจะส่งข้อมูลหรือไม่ ถ้าผู้ใช้ตอบ "yes" หมายถึงการสร้างบัญชีสำเร็จ

Create account
Enter name: Mateo
Enter email: [email protected]
Create password: 1234
Do you want to submit? (yes \ no) yes

Your account has been created
with the following informations.
Name:   Mateo
Email:  [email protected]
Password:       1234

นี่เป็นผลลัพธ์เมื่อรันโปรแกรม เรากรอกชื่อ อีเมล และรหัสผ่านจากที่โปรแกรมถาม และได้ยืนยันการส่งข้อมูล ซึ่งนี่เป็นสิ่งที่คุณเห็นในหน้าสมัครสมาชิกของเว็บไซต์จำนวนมาก

การแสดงผลออกทางหน้าจอ

ในบทก่อนหน้า คุณอาจจะได้เห็นการแสดงผลทางหน้าจอมาบ้างแล้ว ในภาษา PHP เรามักจะใช้คำสั่ง echo และ print เพื่อแสดงผลข้อความออกทางหน้าจอ คำสั่งเหล่านี้เป็นโครงสร้างทางภาษาที่จะทำการติดต่อกับ Output stream โดยการแสดงผลลำดับของตัวอักษรออกทางหน้าจอ แต่สิ่งที่แตกต่างกันระหว่าง echo และ print มีดังนี้

  • print มีเพียงหนึ่งพารามิเตอร์ในขณะที่ echo มีได้หลายพารามิเตอร์
  • print ส่งค่า 1 กลับดังนั้นมันจึงเป็น Expression แต่ echo ไม่มีการส่งค่ากลับ
  • echo ทำงานเร็วกว่าเล็กน้อย

การแสดงผลด้วยคำสั่ง echo

Echo เป็นคำสั่งในการแสดงผลข้อความออกทางหน้าจอ echo ไม่ใช่ฟังก์ชันเสียทีเดียวแต่มันเป็นโครงสร้างของภาษา PHP มาดูตัวอย่างการใช้งานในแบบต่างๆ

<?php

echo "Bound to pass the point of contemplation.\n";
echo "Mercury ", "Venus ", "Earth ", "Mars", "\n"; 

$lang = "PHP";
echo "$lang is a language for web.\n";

$a = 10;
$b = 5;
echo "a + b = ", ($a + $b);

?>

ในตัวอย่างเป็นการแสดงข้อความในรูปแบบต่างในคำสั่ง echo มันสามารถมีได้หลายพารามิเตอร์ ซึ่งจะคั่นด้วยเครื่องหมายคอมมา (,) และเรายังสามารถแทรกตัวแปรใน String ที่เรียกว่า String interpolation

Bound to pass the point of contemplation.
Mercury Venus Earth Mars
PHP is a language for web.
a + b = 15

และนี่เป็นผลลัพธ์การทำงานของคำสั่ง echo เมื่อรันโปรแกรม

การแสดงผลด้วยคำสั่ง print

print เป็นคำสั่งในการแสดงผลเช่นเดียวกับ echo สิ่งที่แตกต่างกันคือคำสั่ง print จะมีการส่งค่า 1 กลับมาเมื่อการแสดงผลเสร็จสิ้น และมันมีได้เพียงพารามิเตอร์เดียว มาดูตัวอย่างการใช้งานคำสั่ง print

<?php

print "My heart grows so cold.\n";

$lang = "PHP";
print "$lang tutorial on marcuscode.com\n";

$age = 28;
$age >= 18 ? print "Adult" : print "Young";

?>

ในตัวอย่าง เราสามารถใช้คำสั่ง print เพื่อแสดงผลได้เช่นเดียวกัน แต่ในคำสั่งสุดท้ายเราสามารถใช้คำสั่ง print ในรูปแบบของ Expression ได้เพราะว่ามันมีการส่งค่ากลับมา

My heart grows so cold.
PHP tutorial on marcuscode.com
Adult

และนี่เป็นผลลัพธ์การทำงานของคำสั่ง print เมื่อรันโปรแกรม

ในบทนี้ คุณได้เรียนรู้การรับค่าและการแสดงผลพื้นฐานในภาษา PHP การใช้งานคำสั่ง echo และ print และทราบถึงข้อแตกต่างของคำสั่งเหล่านี้

บทความนี้เป็นประโยชน์หรือไม่?Yes·No