ไวยากรณ์ PHP ออนไลน์ บทเรียนแรกใน PHP: คุณลักษณะทางไวยากรณ์ เอาต์พุตข้อมูล ตัวแปร การทำงานกับข้อผิดพลาด ขอบเขตตัวแปร

หน้า PHP อย่างง่าย (สวัสดี)

สร้างไฟล์ชื่อ hello.php ในไดเร็กทอรีรากของเอกสารเว็บเซิร์ฟเวอร์ของคุณและเขียนสิ่งต่อไปนี้ลงไป:

ตัวอย่างที่ 2-1 สคริปต์ PHP ตัวแรก: hello.php
การทดสอบ PHP "; ?>


โปรแกรมนี้จะแสดงผลดังต่อไปนี้:
การทดสอบ PHP สวัสดี!




โปรดทราบว่าไม่มีความคล้ายคลึงกับสคริปต์ CGI ไฟล์ไม่จำเป็นต้องสามารถเรียกใช้งานได้หรือทำเครื่องหมายเป็นอย่างอื่น มันเป็นเพียงไฟล์ HTML ธรรมดาที่มีแท็กพิเศษมากมายซึ่งทำหน้าที่เจ๋งๆ มากมาย
โปรแกรมนี้เรียบง่ายมาก และคุณไม่จำเป็นต้องใช้ PHP เพื่อสร้างเพจง่ายๆ เช่นนี้ด้วยซ้ำ สิ่งเดียวที่ทำคือพิมพ์ว่า “Hello! โดยใช้ ฟังก์ชั่น PHPเสียงสะท้อน()
หากตัวอย่างนี้ไม่แสดงอะไรเลยหรือแสดงหน้าต่างดาวน์โหลด หรือหากคุณเห็นไฟล์ทั้งหมดนี้ในรูปแบบข้อความ เป็นไปได้มากว่าเว็บเซิร์ฟเวอร์ของคุณไม่รองรับ PHP ขอให้ผู้ดูแลระบบเซิร์ฟเวอร์ของคุณเปิดใช้งานการสนับสนุนนี้ เสนอคำแนะนำในการติดตั้งให้เขา - ส่วน "การติดตั้ง" ของเอกสารนี้ หากคุณต้องการพัฒนาสคริปต์ใน PHP ที่บ้าน ไฟล์ที่จำเป็นจะอยู่ในส่วนนี้ ที่บ้านคุณสามารถพัฒนาสคริปต์โดยใช้อะไรก็ได้ ระบบปฏิบัติการแต่คุณจะต้องติดตั้งเว็บเซิร์ฟเวอร์ที่เหมาะสม

วัตถุประสงค์ของตัวอย่างคือเพื่อแสดงรูปแบบของแท็กพิเศษ PHP ในตัวอย่างนี้เราใช้- ด้วยวิธีนี้คุณสามารถข้ามไปยังโค้ด PHP ได้บ่อยเท่าที่คุณต้องการ ไฟล์ HTML.

มีมากมาย โปรแกรมแก้ไขข้อความและ สภาพแวดล้อมการพัฒนาแบบรวม (IDE)ซึ่งคุณสามารถสร้างและแก้ไขไฟล์ PHP ได้

โปรแกรมประมวลผลคำ(นักเขียนสตาร์ออฟฟิศ, ไมโครซอฟต์ เวิร์ด, Abiword ฯลฯ) โดยส่วนใหญ่แล้วไม่เหมาะสำหรับการตัดต่อ ไฟล์ PHP- หากคุณกำลังใช้ โปรแกรมประมวลผลคำในการสร้างสคริปต์ใน PHP คุณต้องแน่ใจว่าได้บันทึกไฟล์เป็น PURE TEXT มิฉะนั้น PHP จะไม่สามารถประมวลผลและรันโปรแกรมของคุณได้

เมื่อเขียน สคริปต์ PHPโดยใช้บิวท์อิน วินโดวส์ โน้ตแพดคุณต้องบันทึกไฟล์ที่มีนามสกุล .php Notepad จะเพิ่มนามสกุล .txt โดยอัตโนมัติ มีหลายวิธีในการแก้ไขปัญหานี้
คุณสามารถใส่ชื่อไฟล์ในเครื่องหมายคำพูด (ตัวอย่าง: hello.php)
คุณยังสามารถเลือก "ไฟล์ทั้งหมด" แทน " เอกสารข้อความ» จากรายการดรอปดาวน์พร้อมประเภทไฟล์ในหน้าต่างบันทึก หลังจากนั้น คุณสามารถป้อนชื่อไฟล์โดยไม่ต้องใส่เครื่องหมายคำพูดได้

ตัวแปร

ชื่อตัวแปร

ใน PHP ตัวแปรจะขึ้นต้นด้วยเครื่องหมายดอลลาร์ ($) อักขระนี้สามารถตามด้วยอักขระตัวอักษรและตัวเลขและขีดล่างจำนวนเท่าใดก็ได้ แต่อักขระตัวแรกต้องไม่เป็นตัวเลข คุณควรจำไว้ว่าชื่อตัวแปรใน PHP จะต้องตรงตามตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ซึ่งแตกต่างจากคำหลัก

เมื่อประกาศตัวแปรใน PHP ไม่จำเป็นต้องระบุประเภทของตัวแปรอย่างชัดเจน อย่างไรก็ตาม ตัวแปรเดียวกันสามารถมีประเภทที่แตกต่างกันได้ทั่วทั้งโปรแกรม

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

ขอบเขตตัวแปร

ขอบเขตของตัวแปรคือบริบทที่ตัวแปรนั้นถูกกำหนดไว้ ที่สุด ตัวแปร PHPมีขอบเขตเดียว นอกจากนี้ยังครอบคลุมถึงไฟล์ที่รวมและไฟล์ที่จำเป็นด้วย ตัวอย่างเช่น:
$a = 1; รวมถึง "b.inc";
ที่นี่ตัวแปร $a จะพร้อมใช้งานในสคริปต์ b.inc ที่รวมไว้ อย่างไรก็ตาม ฟังก์ชันที่ผู้ใช้กำหนดจะแนะนำขอบเขตท้องถิ่นภายในฟังก์ชัน ตามค่าเริ่มต้น ตัวแปรใดๆ ที่ใช้ในฟังก์ชันจะถูกจำกัดไว้ที่ขอบเขตภายในของฟังก์ชัน ตัวอย่างเช่น:
$a = 1; /* ขอบเขตทั่วโลก */ การทดสอบฟังก์ชัน () ( echo $a; /* อ้างอิงถึงตัวแปรท้องถิ่น */ ) ทดสอบ ();
สคริปต์นี้จะไม่ส่งออกสิ่งใดเลยเนื่องจากคำสั่ง echo อ้างอิงถึงเวอร์ชันโลคัลของตัวแปร $a ซึ่งไม่มีค่าที่กำหนดให้กับตัวแปรในขอบเขตนั้น สิ่งนี้แตกต่างจากภาษา C ซึ่งตัวแปรส่วนกลางของ C จะถูกทำให้พร้อมใช้งานสำหรับฟังก์ชันต่างๆ โดยอัตโนมัติ เว้นแต่ว่าจะถูกแทนที่โดยเฉพาะในเครื่อง ซึ่งอาจทำให้เกิดปัญหาได้เนื่องจากโปรแกรมเมอร์อาจเปลี่ยนตัวแปรส่วนกลางโดยไม่ได้ตั้งใจ ใน PHP หากจะใช้ในฟังก์ชัน จะต้องประกาศตัวแปรโกลบอลในฟังก์ชันนั้น นี่คือตัวอย่าง:
$a = 1; $ข = 2; ฟังก์ชั่น ผลรวม () ( global $a, $b; $b = $a + $b; ) ผลรวม (); เสียงสะท้อน $b;
สคริปต์นี้จะส่งออกหมายเลข 3 ด้วยการประกาศ $a และ $b global ในฟังก์ชัน การอ้างอิงถึงตัวแปรเหล่านี้ทั้งหมดจะอ้างอิงถึง เวอร์ชันสากล- ไม่มีการจำกัดจำนวนตัวแปรส่วนกลางที่ฟังก์ชันสามารถจัดการได้
วิธีที่สองในการเข้าถึงตัวแปรทั่วโลกคือการใช้อาร์เรย์พิเศษที่กำหนดโดย PHP $GLOBALS ตัวอย่างก่อนหน้านี้สามารถเขียนใหม่ได้ดังนี้:
$a = 1; $ข = 2; ฟังก์ชัน ผลรวม () ( $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"]; ) ผลรวม (); เสียงสะท้อน $b;


อาร์เรย์ $GLOBALS
อาร์เรย์ $GLOBALS คือ อาร์เรย์ที่เชื่อมโยงโดยที่ดัชนีเป็นชื่อและค่าขององค์ประกอบคือค่าของตัวแปรส่วนกลางที่สอดคล้องกัน
คุณสมบัติที่สำคัญอีกประการหนึ่งของขอบเขตตัวแปรคือตัวแปรคงที่ ตัวแปรคงที่มีเฉพาะในฟังก์ชันภายในเครื่องเท่านั้น แต่จะไม่สูญเสียค่าหลังจากที่โปรแกรมออกจากขอบเขตของฟังก์ชัน ลองพิจารณาตัวอย่างต่อไปนี้:
ทดสอบฟังก์ชัน () ( $a = 0; echo $a; $a++; )
ฟังก์ชั่นนี้ค่อนข้างไร้ประโยชน์เพราะทุกครั้งที่ถูกเรียกมันจะตั้งค่าของ $a เป็น 0 และพิมพ์ 0 นิพจน์ $a++ ที่เพิ่มค่าของตัวแปรจะไม่ทำอะไรเลย เพราะเมื่อฟังก์ชันเสร็จสิ้น ตัวแปร $a จะหายไป ในการสร้างฟังก์ชันตัวนับที่มีประโยชน์ซึ่งจะไม่สูญเสียค่า เราจะประกาศ $a เป็นค่าคงที่:
การทดสอบฟังก์ชัน () ( คงที่ $a = 0; echo $a; $a++; )
ตอนนี้ ทุกครั้งที่เรียกใช้ฟังก์ชัน Test() ฟังก์ชันจะพิมพ์ค่าของตัวแปร $a และเพิ่มค่า
นอกจากนี้ ตัวแปรคงที่ยังช่วยในการทำงานกับฟังก์ชันแบบเรียกซ้ำอีกด้วย ฟังก์ชันที่เรียกตัวเองว่าเรียกซ้ำ คุณควรระมัดระวังในการเขียนฟังก์ชันแบบเรียกซ้ำเพราะคุณสามารถทำให้การวนซ้ำไม่มีที่สิ้นสุด มีความจำเป็นต้องสร้างวิธีการขัดขวางการเรียกซ้ำ ฟังก์ชันแบบง่ายต่อไปนี้นับได้ถึง 10 โดยใช้ตัวแปรคงที่ $count และหยุดการเรียกซ้ำ:
ทดสอบฟังก์ชัน () ( static $count = 0; $count++; echo $count; if ($count< 10) { Test (); } $count--; }


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

  • จำนวนเต็ม;
  • เชือก;
  • บูลีน;
  • สองเท่า;
  • อาร์เรย์;
  • วัตถุ;

ทั้งหมด
ระบุจำนวนเต็มโดยใช้ไวยากรณ์ต่อไปนี้:
$a = 1234; #เลขทศนิยม
$a = -123; #จำนวนลบ
$a = 0123; #เลขฐานแปด (เทียบเท่าทศนิยม 83)
$a = 0123; # เลขฐานสิบหก (เทียบเท่าทศนิยม 18)


ขนาดของจำนวนเต็มขึ้นอยู่กับแพลตฟอร์ม แต่โดยทั่วไปแล้วค่าสูงสุดจะอยู่ที่ประมาณ 2 พันล้าน (32 บิตที่เซ็นชื่อ)
มีฟังก์ชัน gettype() ที่คืนค่าประเภทที่ PHP กำหนดให้กับตัวแปร:
"; echo(gettype($var1)); ?>
ในกรณีแรก PHP จะส่งคืนสตริง ในส่วนที่สองจะเป็นจำนวนเต็ม


ตัวเลขจุดลอยตัว
หมายเลขจุดลอยตัว ("ตัวเลขความแม่นยำสองเท่า") ได้รับการระบุโดยใช้ไวยากรณ์ต่อไปนี้:
$a = 1.234; $a = 1.2e3;
ขนาดของตัวเลขทศนิยมขึ้นอยู่กับแพลตฟอร์ม โดยทั่วไปค่าสูงสุดอาจเป็น 1.8e308 โดยมีความแม่นยำประมาณทศนิยม 14 หลัก (รูปแบบ IEEE 64 บิต)
ความสนใจ
โดยทั่วไปแล้ว ทศนิยมธรรมดา เช่น 0.1 หรือ 0.7 จะถูกแปลงเป็นตัวเลขทศนิยมสองเท่าโดยสูญเสียความแม่นยำไปบ้าง สิ่งนี้สามารถนำไปสู่ผลลัพธ์ที่แปลกได้ ตัวอย่างเช่น function floor((0.1+0.7)*10) จะส่งคืนค่า 7 แทนที่จะเป็น 8 ที่คาดไว้ เนื่องจากผลลัพธ์ของการแทนค่าภายในเป็นตัวเลขเช่น 7.9999999999....

นี่คือคำอธิบายโดยข้อเท็จจริงนี้ เศษส่วนบางประเภทไม่สามารถแสดงเป็นทศนิยมได้อย่างถูกต้องและมีจำนวนหลักจำกัด ตัวอย่างเช่น 1/3 ในรูปแบบทศนิยมจะกลายเป็น 0.3333333 - -
ดังนั้น อย่าเชื่อถือผลลัพธ์ของการคำนวณจุดลอยตัวจนถึงหลักสุดท้าย และอย่าทดสอบความเท่าเทียมกันของจุดลอยตัว หากคุณต้องการความแม่นยำสูงกว่านี้จริงๆ ให้ใช้ฟังก์ชันทางคณิตศาสตร์ที่มีความแม่นยำตามอำเภอใจหรือฟังก์ชัน gmp


สตริง
สามารถระบุสตริงได้โดยใช้ชุดตัวคั่นหนึ่งหรือสองชุด
หากสตริงอยู่ในเครื่องหมายคำพูดคู่ (") ตัวแปรในสตริงจะถูกขยาย (ขึ้นอยู่กับข้อจำกัดในการแยกวิเคราะห์บางประการ) เช่นเดียวกับใน C และ Perl เมื่อระบุ อักขระพิเศษแบ็กสแลช ("\") สามารถใช้ได้:


ตารางที่ 6-1. อักขระที่เข้ารหัสโดยใช้แบ็กสแลช

ลำดับต่อมา ความหมาย
\nการป้อนเส้น (LF หรือ 0x0A นิ้ว) การเข้ารหัส ASCII)
\rแคร่กลับ (CR หรือ 0x0D ใน ASCII)
\tแท็บแนวนอน (HT หรือ 0x09 ใน ASCII)
\\ แบ็กสแลช
\$ เครื่องหมายดอลลาร์
\" เครื่องหมายคำพูดคู่
\{1,3} ลำดับของอักขระที่สอดคล้องกัน การแสดงออกปกติ, เป็นสัญลักษณ์ในรูปแบบฐานแปด
\x(1,2)ลำดับของอักขระที่ตรงกับนิพจน์ทั่วไปคืออักขระในรูปแบบเลขฐานสิบหก

หากคุณพยายามแสดงอักขระอื่นด้วยวิธีนี้ ทั้งแบ็กสแลชและอักขระนั้นจะถูกพิมพ์ออกมา ใน PHP 3 สิ่งนี้จะออกคำเตือนที่ระดับ E_NOTICE ใน PHP 4 ไม่มีการสร้างข้อความเตือน
วิธีที่สองในการแยกสตริงคือการใช้เครื่องหมายคำพูดเดี่ยว (""") หากสตริงอยู่ในเครื่องหมายคำพูดเดี่ยวอักขระเดียวเท่านั้นที่สามารถใช้ได้ภายในสตริงคือ "\\" และ "\"" วิธีนี้ทำให้คุณสามารถระบุเครื่องหมายคำพูดเดี่ยวและแบ็กสแลชในสตริงที่คั่นด้วยเครื่องหมายคำพูดเดี่ยวได้ ตัวแปรในบรรทัดที่คั่นด้วยเครื่องหมายคำพูดเดี่ยวจะไม่ถูกขยาย
อีกวิธีหนึ่งในการแยกสตริงคือการใช้ไวยากรณ์ของเอกสาร ("<<<"). После <<< укажите идентификатор, затем строку, а затем тот же самый идентификатор, чтобы закрыть «кавычки».
ตัวระบุการปิดจะต้องเริ่มต้นในคอลัมน์แรกของแถว นอกจากนี้ ตัวระบุต้องเป็นไปตามรูปแบบการตั้งชื่อของป้ายกำกับใดๆ ใน PHP โดยจะต้องมีเฉพาะอักขระตัวอักษรและตัวเลขและขีดล่าง และต้องไม่ขึ้นต้นด้วยตัวเลขหรือขีดล่าง
ข้อความดังกล่าวมีลักษณะการทำงานเหมือนกับสตริงที่มีเครื่องหมายคำพูดคู่ แต่ไม่มีเครื่องหมายคำพูดคู่ ซึ่งหมายความว่าคุณไม่จำเป็นต้องเข้ารหัสเครื่องหมายคำพูดด้วยเครื่องหมายทับ แต่คุณยังสามารถใช้การเข้ารหัสเครื่องหมายทับได้ ตัวแปรถูกขยาย แต่ควรใช้ความระมัดระวังเมื่อแสดงตัวแปรที่ซับซ้อนในสตริงดังกล่าว ตัวอย่างที่ 6-1 ตัวอย่างเครื่องหมายคำพูดในสตริงประเภทเอกสาร
ฟู = "ฟู";<<$this->bar = array("Bar1", "Bar2", "Bar3");
) ) $foo = ใหม่ foo(); $name = "ชื่อของฉัน"; เสียงสะท้อน
ฟู ตอนนี้ฉันพิมพ์ ($foo->bar) ควรพิมพ์อักษรตัวใหญ่ "A" ที่นี่: \x41 EOT; -
หมายเหตุ: มีการเพิ่มการสนับสนุนสำหรับรายการสตริงนี้ใน PHP 4


คุณสามารถเชื่อมสตริงโดยใช้ตัวดำเนินการจุด "." โปรดทราบว่าตัวดำเนินการ "+" (การบวก) จะไม่ทำงานเมื่อเชื่อมต่อสตริง ดูส่วนเกี่ยวกับตัวดำเนินการสตริงสำหรับข้อมูลเพิ่มเติม
สามารถเข้าถึงอักขระในสตริงได้โดยถือว่าสตริงเป็นอาร์เรย์ของอักขระที่จัดทำดัชนีโดยใช้ไวยากรณ์ภาษา C ดูตัวอย่างด้านล่าง

ตัวอย่างที่ 6-2 ตัวอย่างการทำงานกับสตริง

หมายเลข: 9

" */ $num = 9; $str = "

หมายเลข: 9

ตัวอย่างที่ 6-2 ตัวอย่างการทำงานกับสตริง

หมายเลข: 9

หมายเลข: $num


"; /* อันนี้จะเป็น "
"; /* รับอักขระตัวแรกของสตริง */ $str = "นี่คือการทดสอบ"; $first = $str; /* รับอักขระตัวสุดท้ายของสตริง */ $str = "นี่ยังคงเป็น ทดสอบ"; $last = $str ; ?>
การแปลงสตริง
ค่าถูกกำหนดโดยจุดเริ่มต้นของสตริง หากสตริงขึ้นต้นด้วยข้อมูลตัวเลขที่ถูกต้อง oi จะถูกนำมาใช้เป็นค่า มิฉะนั้นค่าจะเป็น 0 (ศูนย์) ข้อมูลตัวเลขที่ถูกต้องคือเครื่องหมายทางเลือกที่ตามด้วยตัวเลขหนึ่งหลักขึ้นไป (อาจมีจุดทศนิยม) ตามด้วยเลขชี้กำลังทางเลือก เลขชี้กำลังคือ "e" หรือ "E" ตามด้วยตัวเลขหนึ่งหลักขึ้นไป
ถ้านิพจน์แรกเป็นสตริง ประเภทของตัวแปรจะขึ้นอยู่กับนิพจน์ที่สอง
$ฟู = 1 + "10.5"; // $foo มีความแม่นยำสองเท่า (11.5) $foo = 1 + "-1.3e3"; // $foo มีความแม่นยำสองเท่า (-1299) $foo = 1 + "bob-1.3e3"; // $foo - จำนวนเต็ม (1) $foo = 1 + "bob3"; // $foo - จำนวนเต็ม (1) $foo = 1 + "หมูตัวเล็ก 10 ตัว"; // $foo - จำนวนเต็ม (11) $foo = 1 + "ลูกหมู 10 ตัว"; // $foo - จำนวนเต็ม (11) $foo = "10.0 สุกร " + 1; // $foo - จำนวนเต็ม (11) $foo = "10.0 สุกร " + 1.0; // $foo มีความแม่นยำสองเท่า (11)

\n";


อาร์เรย์หนึ่งมิติ
PHP รองรับสเกลาร์และอาเรย์แบบเชื่อมโยง จริงๆแล้วไม่มีความแตกต่างระหว่างพวกเขา คุณสามารถสร้างอาร์เรย์ได้โดยใช้ฟังก์ชัน list() หรือ array() หรือโดยการกำหนดค่าขององค์ประกอบอาร์เรย์อย่างชัดเจน
$a = "เอบีซี"; $a = "def"; $b["ฟู"] = 13;
คุณยังสามารถสร้างอาร์เรย์ได้โดยการเพิ่มองค์ประกอบเข้าไป เมื่อกำหนดค่าให้กับตัวแปรอาร์เรย์ด้วยวงเล็บว่าง ค่าดังกล่าวจะถูกผนวกเข้ากับส่วนท้ายของอาร์เรย์
$a = "สวัสดี"; // $a == "สวัสดี" $a = "โลก"; // $a == "โลก"
คุณสามารถจัดเรียงอาร์เรย์ได้โดยใช้ฟังก์ชัน asort(), arsort(), ksort(), rsort(), sort(), uasort(), usort() และ uksort() ขึ้นอยู่กับประเภทการเรียงลำดับที่ต้องการ
คุณสามารถนับจำนวนองค์ประกอบในอาร์เรย์ได้โดยใช้ฟังก์ชัน count()
คุณสามารถเลื่อนดูอาร์เรย์ได้โดยใช้ฟังก์ชัน next() และ prev() อีกวิธีหนึ่งในการย้ายผ่านอาร์เรย์คือการใช้ฟังก์ชัน Each()


การแปลงประเภท
PHP ไม่ต้องการ (หรือสนับสนุน) การประกาศประเภทที่ชัดเจนเมื่อประกาศตัวแปร ประเภทของตัวแปรจะถูกกำหนดโดยบริบทที่ใช้ นั่นคือ ถ้าคุณกำหนดค่าสตริงให้กับ var var ก็จะกลายเป็นสตริง หากคุณกำหนดค่าจำนวนเต็ม var ก็จะกลายเป็นจำนวนเต็ม
ตัวอย่างของการแปลงประเภท PHP อัตโนมัติคือตัวดำเนินการเพิ่มเติม "+" ถ้าตัวถูกดำเนินการใดๆ มีความแม่นยำสองเท่า ตัวถูกดำเนินการทั้งหมดจะถูกประเมินเป็นตัวเลขที่มีความแม่นยำสองเท่า และผลลัพธ์จะเป็นตัวเลขที่มีความแม่นยำสองเท่า มิฉะนั้น ตัวถูกดำเนินการจะถูกตีความว่าเป็นจำนวนเต็ม และผลลัพธ์จะเป็นจำนวนเต็มด้วย โปรดทราบว่าประเภทของตัวถูกดำเนินการจะไม่เปลี่ยนแปลง มีเพียงการประเมินตัวถูกดำเนินการเท่านั้นที่เปลี่ยนแปลง
$ฟู = "0"; // $foo - string "0" (ASCII 48) $foo++; // $foo - สตริง "1" (ASCII 49) $foo += 1; // $foo ตอนนี้เป็นจำนวนเต็ม (2) $foo = $foo + 1.3; // $foo ตอนนี้เป็นตัวเลขที่มีความแม่นยำสองเท่า (3.3) $foo = 5 + "10 Little Piggies"; // $foo - จำนวนเต็ม (15) $foo = 5 + "หมูน้อย 10 ตัว"; // $foo - จำนวนเต็ม (15)
หากสองตัวอย่างสุดท้ายดูแปลกสำหรับคุณ โปรดดูส่วนการแปลงสตริง
หากคุณต้องการให้ตัวแปรมีประเภทเฉพาะ โปรดดูส่วน Type Coercion หากคุณต้องการเปลี่ยนประเภทของตัวแปร โปรดดูส่วน settype()
คุณสามารถทดสอบตัวอย่างในส่วนนี้ได้โดยเพิ่มบรรทัดต่อไปนี้:
echo "\$foo==$foo; พิมพ์ " gettype($foo) . -
\n";
หมายเหตุ: พฤติกรรมของการแปลงอัตโนมัติยังไม่ได้กำหนดไว้ในขณะนี้
$a = 1; // $a - จำนวนเต็ม $a = "f"; // $a กลายเป็นอาร์เรย์ องค์ประกอบ $a เก็บตัวอักษร "f"
แม้ว่าบรรทัดด้านบนดูเหมือนจะทำให้ $a กลายเป็นอาร์เรย์ที่มีองค์ประกอบแรกเป็น "f" อย่างชัดเจน ให้ลองพิจารณาตัวอย่างต่อไปนี้:
$a = "1"; // $a - string $a = "f"; // แล้วการเลื่อนบรรทัดล่ะ? จะเกิดอะไรขึ้น?
เนื่องจาก PHP รองรับสตริงการจัดทำดัชนีผ่าน shift โดยใช้ไวยากรณ์เดียวกันกับอาร์เรย์การจัดทำดัชนี ตัวอย่างข้างต้นอาจทำให้เกิดปัญหา: $a จะกลายเป็นอาร์เรย์ที่มีองค์ประกอบแรก f หรือ f จะกลายเป็นอักขระตัวแรกของสตริง $a หรือไม่
ด้วยเหตุนี้ ตั้งแต่ PHP 3.0.12 และ PHP 4.0b3-RC4 ผลลัพธ์ของการแปลงอัตโนมัติจึงถือว่าไม่ได้กำหนดไว้ มีการอภิปรายเกี่ยวกับวิธีการแก้ไขปัญหานี้


ประเภทการหล่อ
การหล่อประเภทใน PHP ทำงานเหมือนกับใน C: ชื่อของประเภทที่ต้องการจะถูกระบุในวงเล็บก่อนที่จะส่งตัวแปร
$ฟู = 10; // $foo - จำนวนเต็ม $bar = (สองเท่า) $foo; // $bar มีความแม่นยำสองเท่า
อนุญาตให้ร่ายดังต่อไปนี้:

  • (int), (จำนวนเต็ม) - แปลงเป็นจำนวนเต็ม
  • (จริง), (สองเท่า), (ลอย) - แปลงเป็นสองเท่า
  • (สตริง) - แคสต์เป็นประเภทสตริง
  • (array) - ส่งเป็นประเภทอาเรย์
  • (วัตถุ) - ส่งเพื่อพิมพ์วัตถุ

โปรดทราบว่าอนุญาตให้ใช้แท็บและช่องว่างในวงเล็บได้ ดังนั้นนิพจน์ต่อไปนี้จึงเทียบเท่ากัน:
$foo = (int) $บาร์; $foo = (int) $บาร์;
บางครั้งผลการหล่อทั้งสองแบบก็ไม่ชัดเจน ตัวอย่างเช่น คุณควรใส่ใจกับสิ่งต่อไปนี้
เมื่อส่งตัวแปรสเกลาร์หรือสตริงลงในอาร์เรย์ ตัวแปรนั้นจะกลายเป็นองค์ประกอบแรกของอาร์เรย์:
$var = "เซียว"; $arr = (อาร์เรย์) $var; เสียงสะท้อน $arr; // เอาท์พุท: "ciao"
เมื่อคุณแปลงตัวแปรสเกลาร์หรือสตริงเป็นวัตถุ ตัวแปรจะกลายเป็นคุณลักษณะของวัตถุ ชื่อแอตทริบิวต์จะเป็น "สเกลาร์":
$var = "เซียว"; $obj = (วัตถุ) $var; echo $obj->สเกลาร์; // เอาท์พุท: "ciao"

ค่าคงที่

ชื่อคงที่
ค่าคงที่เป็นตัวระบุค่าอย่างง่าย จากชื่อของพวกเขา เป็นเรื่องง่ายที่จะเข้าใจว่าค่าของพวกเขาไม่สามารถเปลี่ยนแปลงได้ในระหว่างการเรียกใช้สคริปต์ (ข้อยกเว้นคือค่าคงที่ “เวทย์มนตร์” ซึ่งจริงๆ แล้วไม่ใช่ค่าคงที่ในความหมายเต็มของคำ) ชื่อคงที่จะคำนึงถึงขนาดตัวพิมพ์ ตามแบบแผน ชื่อคงที่จะเขียนด้วยตัวพิมพ์ใหญ่เสมอ
ชื่อของค่าคงที่จะต้องเป็นไปตามกฎเดียวกันกับที่ใช้กับชื่ออื่นๆ ใน PHP ชื่อที่ถูกต้องขึ้นต้นด้วยตัวอักษรหรือขีดล่าง และประกอบด้วยตัวอักษร ตัวเลข และขีดล่าง นิพจน์ทั่วไปสำหรับตรวจสอบความถูกต้องของชื่อคงที่มีลักษณะดังนี้: *
หมายเหตุ: คำว่า "ตัวอักษร" ในที่นี้หมายถึงอักขระ a-z, A-Z และอักขระอื่นๆ ที่มีรหัส ASCII 127 ถึง 255 (0x7f-0xff)


การประกาศค่าคงที่
คุณสามารถกำหนดค่าคงที่ได้โดยใช้ฟังก์ชัน Defin() เมื่อกำหนดค่าคงที่แล้ว ค่าของมันจะไม่สามารถเปลี่ยนแปลงหรือทำให้เป็นโมฆะได้
ค่าคงที่จะมีได้เฉพาะข้อมูลสเกลาร์เท่านั้น (บูลีน จำนวนเต็ม ทศนิยม และสตริง)
คุณสามารถรับค่าคงที่ได้โดยการระบุชื่อ ไม่เหมือนกับตัวแปร คุณไม่จำเป็นต้องนำสัญลักษณ์ $ นำหน้าชื่อคงที่ คุณยังสามารถใช้ฟังก์ชันคงที่() เพื่อรับค่าคงที่ได้หากคุณสร้างชื่อค่าคงที่แบบไดนามิก ใช้ฟังก์ชัน get_known_constants() เพื่อรับรายการค่าคงที่ที่ประกาศทั้งหมด
หมายเหตุ: ตัวแปรค่าคงที่และ (ทั่วโลก) อยู่ในเนมสเปซที่แตกต่างกัน ซึ่งหมายความว่า ตัวอย่างเช่น TRUE และ $TRUE เป็นสิ่งที่แตกต่างกันโดยสิ้นเชิง
หากคุณใช้ค่าคงที่ที่ไม่ได้กำหนดไว้ PHP จะถือว่าคุณหมายถึงชื่อของค่าคงที่ เหมือนกับว่าคุณได้ระบุตัวแปรประเภทสตริง (CONSTANT และ CONSTANT) สิ่งนี้จะสร้างข้อผิดพลาดประเภท E_NOTICE ดูบทคู่มือที่อธิบายว่าทำไม $foo ถึงผิด (เว้นแต่คุณจะประกาศ bar เป็นค่าคงที่ก่อนหน้านี้โดยใช้ Defin()) หากคุณต้องการตรวจสอบว่ามีค่าคงที่หรือไม่ ให้ใช้ฟังก์ชัน Defined()


ความแตกต่างระหว่างค่าคงที่และตัวแปร:

  • ค่าคงที่ไม่มีเครื่องหมายดอลลาร์นำหน้า ($);
  • ค่าคงที่สามารถกำหนดได้โดยใช้ฟังก์ชัน Defin() เท่านั้น ไม่ใช่โดยการกำหนดค่า
  • สามารถกำหนดและเข้าถึงค่าคงที่ได้ทุกที่โดยไม่คำนึงถึงขอบเขต
  • ค่าคงที่ไม่สามารถกำหนดหรือทำให้เป็นโมฆะได้หลังจากการประกาศครั้งแรก และ
  • ค่าคงที่จะมีได้เฉพาะค่าสเกลาร์เท่านั้น

ตัวอย่างที่ 13-1 คำจำกัดความของค่าคงที่


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


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


ตารางที่ 13-1. ค่าคงที่ PHP "วิเศษ" บางตัว

เอาต์พุตแบบง่าย

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

คุณป้อน:

...
โปรดทราบว่าคำสั่งเอาต์พุตไม่ได้ตามด้วยเครื่องหมายอัฒภาค
หลังจากนั้น คุณจะคุ้นเคยกับโครงสร้าง PHP พื้นฐานอื่นๆ เช่น คำสั่งแบบมีเงื่อนไข if-then ซึ่งจำเป็นต่อการสร้างแอปพลิเคชัน

นิพจน์ PHP

นิพจน์ถือเป็นรากฐานสำคัญของ PHP เกือบทุกสิ่งที่คุณเขียนใน PHP นั้นเป็นนิพจน์ คำจำกัดความที่ง่ายและแม่นยำที่สุดของสำนวนนี้คือ “สิ่งใดก็ตามที่มีความหมาย”
รูปแบบหลักของนิพจน์คือค่าคงที่และตัวแปร หากคุณเขียน "$a = 5" คุณกำลังกำหนด "5" ให้กับตัวแปร $a แน่นอนว่า "5" มีค่าเป็น 5 หรืออีกนัยหนึ่ง "5" คือนิพจน์ที่มีค่า 5 (ในกรณีนี้ "5" คือค่าคงที่จำนวนเต็ม)
หลังจากการมอบหมายนี้ คุณคาดหวังว่าค่าของ $a จะเป็น 5 เช่นกัน ดังนั้นหากคุณเขียน $b = $a คุณคาดหวังว่ามันจะทำงานเหมือนกับที่คุณเขียน $b = 5 กล่าวอีกนัยหนึ่ง $a นี่คือ ยังเป็นนิพจน์ที่มีค่า 5 หากทุกอย่างทำงานถูกต้องนี่คือสิ่งที่จะเกิดขึ้นอย่างแน่นอน
ตัวอย่างนิพจน์ที่ซับซ้อนกว่าเล็กน้อยคือฟังก์ชัน ตัวอย่างเช่น พิจารณาฟังก์ชันต่อไปนี้:

สมมติว่าคุณคุ้นเคยกับแนวคิดเรื่องฟังก์ชันเป็นอย่างดี (หากไม่ ให้อ่านบทเกี่ยวกับฟังก์ชัน) คุณจะเชื่อว่ารายการดังกล่าว
$c = foo() เทียบเท่ากับการเขียน $c = 5 อย่างแน่นอนและคุณพูดถูก ฟังก์ชันคือนิพจน์ที่มีค่าเท่ากับสิ่งที่ฟังก์ชันส่งคืน เนื่องจาก foo() ส่งคืนค่า 5 ค่าของนิพจน์ "foo()" จึงเป็น 5 โดยทั่วไปแล้ว ฟังก์ชันต่างๆ ไม่เพียงแต่ส่งคืนค่าคงที่เท่านั้น แต่ยังประเมินบางสิ่งบางอย่างอีกด้วย
แน่นอนว่าค่าใน PHP ไม่จำเป็นต้องเป็นจำนวนเต็ม และบ่อยครั้งที่ค่าเหล่านั้นไม่ใช่ PHP รองรับค่าสเกลาร์สามประเภท: จำนวนเต็ม จุดลอยตัว และค่าสตริง (สเกลาร์เป็นค่าที่คุณไม่สามารถ "แยก" ออกเป็นชิ้นเล็ก ๆ ได้ ซึ่งแตกต่างจากอาร์เรย์ เป็นต้น) PHP ยังรองรับสองประเภทที่รวมกัน (ไม่ใช่สเกลาร์) ได้แก่ อาร์เรย์และอ็อบเจ็กต์ ค่าแต่ละประเภทสามารถกำหนดให้กับตัวแปรหรือส่งกลับโดยฟังก์ชันได้
จนถึงขณะนี้ ผู้ใช้ PHP/FI 2 ไม่ควรสังเกตเห็นการเปลี่ยนแปลงใดๆ อย่างไรก็ตาม PHP ก็เหมือนกับภาษาอื่นๆ มากมาย ที่เข้าใจสำนวนต่างๆ มากมาย PHP เป็นภาษาที่เน้นการแสดงออกและถือว่าเกือบทุกอย่างเป็นการแสดงออก กลับไปที่ตัวอย่างที่เราจัดการไปแล้ว: "$a = 5" เห็นได้ง่ายว่ามีสองค่าที่นี่ - ค่าของค่าคงที่จำนวนเต็ม "5" และค่าของตัวแปร $a ซึ่งรับค่า 5 เช่นกัน แต่ในความเป็นจริง ยังมีอีกค่าหนึ่งที่นี่ - มูลค่าของงานนั้นเอง การมอบหมายงานจะประเมินเป็นค่าที่กำหนด ในกรณีนี้คือ 5 ในทางปฏิบัติ หมายความว่า "$a = 5" ไม่ว่าจะทำอะไรก็ตาม ก็คือนิพจน์ที่มีค่าเป็น 5 ดังนั้น การเขียน "$b = ( $ a = 5)" เทียบเท่ากับการเขียน "$a = 5; $b = 5;" (เครื่องหมายอัฒภาคเป็นจุดสิ้นสุดของนิพจน์) เนื่องจากการดำเนินการมอบหมายงานจะถูกแยกวิเคราะห์จากขวาไปซ้าย คุณจึงสามารถเขียน "$b = $a = 5" ได้เช่นกัน
อีกตัวอย่างที่ดีของการเน้นการแสดงออกคือการเพิ่มขึ้นและการลดลงก่อนและหลัง ผู้ใช้ PHP/FI 2 และภาษาอื่นๆ มากมายอาจคุ้นเคยกับสัญลักษณ์ตัวแปร++ และตัวแปร-- อยู่แล้ว เหล่านี้คือตัวดำเนินการเพิ่มและลดค่า ใน PHP/FI 2 การดำเนินการ ""$a"" ไม่มีความหมาย (ไม่ใช่นิพจน์) ดังนั้นคุณจึงไม่สามารถกำหนดหรือใช้งานในทางใดทางหนึ่งได้ PHP ปรับปรุงความสามารถในการเพิ่ม/ลดโดยทำให้เป็นนิพจน์ เช่นเดียวกับใน C เช่นเดียวกับ C PHP รองรับการเพิ่มขึ้นสองประเภท - คำนำหน้าและ postfix พวกเขาทั้งสองเพิ่มค่าของตัวแปรและผลกระทบต่อตัวแปรจะเหมือนกัน ความแตกต่างคือความหมายของการแสดงออกที่เพิ่มขึ้น การเพิ่มคำนำหน้าซึ่งเขียนเป็น " $variable" จะถูกประเมินเป็นค่าที่เพิ่มขึ้น (PHP เพิ่มตัวแปรก่อนที่จะอ่านค่าของมัน ดังนั้นชื่อ "การเพิ่มล่วงหน้า") การเพิ่ม postfix ซึ่งเขียนเป็น "$variable++" จะถูกคำนวณเป็นค่าเดิมของตัวแปร $variable ก่อนที่จะเพิ่มค่านั้น (PHP จะเพิ่มตัวแปรหลังจากอ่านค่าของมันแล้ว ดังนั้นชื่อ "post-increation")
ประเภทของนิพจน์ที่พบบ่อยมากคือนิพจน์การเปรียบเทียบ โดยประเมินเป็น 0 หรือ 1 ซึ่งหมายถึง FALSE หรือ TRUE ตามลำดับ PHP รองรับ > (มากกว่า), >= (มากกว่าหรือเท่ากับ), == (เท่ากับ), != (ไม่เท่ากับ),< (меньше) и <= (меньше либо равно). Он также поддерживает операторы строгого равенства: === (равно и одного типа) и!== (не равно или не одного типа). Чаще всего эти выражения используются в условиях выполнения операторов, таких как if.
ตัวอย่างสุดท้ายของนิพจน์ที่เราจะดูที่นี่คือการดำเนินการแบบผสมและนิพจน์การกำหนด คุณรู้อยู่แล้วว่าถ้าคุณต้องการเพิ่ม $a ขึ้น 1 คุณสามารถเขียนว่า "$a" หรือ "$a" ได้ แต่ถ้าคุณต้องการเพิ่มมากกว่าหนึ่งรายการ เช่น 3 ล่ะ? คุณสามารถเขียน "$a++" ได้หลายครั้ง แต่เห็นได้ชัดว่านี่ไม่ใช่วิธีที่มีประสิทธิภาพหรือสะดวกนัก วิธีปฏิบัติทั่วไปมากกว่านั้นคือเขียนว่า "$a = $a + 3" "$a + 3" คำนวณเป็น $a บวก 3 และกำหนดให้ $a อีกครั้ง โดยเพิ่มขึ้น $a 3 ใน PHP เช่นเดียวกับในภาษาอื่นบางภาษา เช่น C คุณสามารถเขียนสิ่งนี้ด้วยวิธีที่สั้นกว่า ซึ่งจะช่วยเพิ่มความชัดเจนของความหมายและความรวดเร็วในการทำความเข้าใจโค้ดเมื่อเวลาผ่านไป คุณสามารถเพิ่ม 3 เข้ากับค่าปัจจุบันของ $a โดยใช้สัญลักษณ์ "$a += 3" ความหมายที่แท้จริงคือ “นำค่า $a บวก 3 เข้าไป แล้วกำหนดกลับไปยังตัวแปร $a” นอกจากจะเข้าใจง่ายและกระชับแล้วยังทำงานได้เร็วขึ้นอีกด้วย ค่าของ "$a += 3" เช่นเดียวกับการกำหนดปกติ คือค่าที่กำหนด โปรดทราบว่านี่ไม่ใช่ 3 แต่เป็นมูลค่ารวมของ $a บวก 3 (สิ่งที่กำหนดให้กับ $a) ตัวดำเนินการสองตำแหน่งใดๆ สามารถใช้ในลักษณะนี้ได้ เช่น "$a -= 5" (ลบ 5 จากค่าของ $a), "$b *= 7" (คูณค่าของ $b ด้วย 7) ฯลฯ
มีสำนวนอื่นที่อาจดูผิดปกติหากคุณไม่เคยเห็นในภาษาอื่น - ตัวดำเนินการแบบมีเงื่อนไขแบบไตรภาค:

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

สำนวนบางอย่างถือได้ว่าเป็นคำแนะนำ ในกรณีนี้ คำสั่งจะดูเหมือน "expression" ";" - นิพจน์ที่ตามด้วยเครื่องหมายอัฒภาค ในรายการ "$b=$a=5;" $a=5 เป็นนิพจน์ที่ถูกต้อง แต่ไม่ใช่คำสั่งในตัวเอง ในขณะที่ "$b=$a=5;" เป็นคำสั่งสอนที่ถูกต้อง
สิ่งสุดท้ายที่ควรกล่าวถึงคือคุณค่าความจริงของสำนวน ในหลายกรณี โดยทั่วไปแล้วคำสั่งและลูปแบบมีเงื่อนไข คุณอาจไม่สนใจค่าเฉพาะของนิพจน์ แต่จะสนใจเฉพาะค่าที่เป็น TRUE หรือ FALSE เท่านั้น ค่าคงที่ TRUE และ FALSE (ไม่คำนึงถึงขนาดตัวพิมพ์) คือค่าบูลีนที่เป็นไปได้สองค่า หากจำเป็น นิพจน์จะถูกแปลงเป็นประเภทบูลีนโดยอัตโนมัติ สำหรับข้อมูลเพิ่มเติมว่าสิ่งนี้เกิดขึ้นได้อย่างไร โปรดดูหัวข้อการคัดเลือกประเภท
PHP นำเสนอการใช้งานนิพจน์ที่สมบูรณ์และมีประสิทธิภาพ และเอกสารประกอบที่สมบูรณ์นั้นอยู่นอกเหนือขอบเขตของบทช่วยสอนนี้ ตัวอย่างข้างต้นน่าจะทำให้คุณเข้าใจว่ามันคืออะไรและคุณสามารถสร้างสำนวนที่มีประโยชน์ด้วยตัวเองได้อย่างไร ต่อไปนี้ เราจะใช้ตัวย่อ expr เพื่อแสดงถึงนิพจน์ PHP ที่ถูกต้องในเอกสารนี้

ตัวดำเนินการ PHP

ตัวดำเนินการคือสิ่งที่ประกอบด้วยค่าตั้งแต่หนึ่งค่าขึ้นไป (นิพจน์ในศัพท์แสงการเขียนโปรแกรม) ที่สามารถประเมินเป็นค่าใหม่ได้ (ดังนั้น โครงสร้างทั้งหมดจึงถือเป็นนิพจน์ได้) ตามนั้นฟังก์ชันหรือโครงสร้างอื่นใดที่ส่งคืนค่า (เช่น print()) เป็นคำสั่ง ซึ่งแตกต่างจากโครงสร้างภาษาอื่น ๆ ทั้งหมด (เช่น echo()) ที่ไม่ส่งคืนสิ่งใดเลย
ตัวดำเนินการมีสามประเภท ประการแรก มีตัวดำเนินการเอกภาคซึ่งดำเนินการกับอาร์กิวเมนต์เดียวเท่านั้น เช่น ! (ตัวดำเนินการปฏิเสธ) หรือ ++ (เพิ่มขึ้น) กลุ่มที่สองประกอบด้วยตัวดำเนินการไบนารี: ประกอบด้วยตัวดำเนินการส่วนใหญ่ที่รองรับใน PHP ซึ่งเป็นรายการทั้งหมดที่คุณสามารถดูได้ในส่วนคำสั่งการดำเนินการของตัวดำเนินการ
และกลุ่มสุดท้ายกลุ่มที่สามคือตัวดำเนินการที่ประกอบด้วย: ใช้เพื่อเลือกแบบมีเงื่อนไขระหว่างตัวดำเนินการสองตัว ขึ้นอยู่กับผลลัพธ์ของการประเมินของผู้ดำเนินการตัวที่สาม กล่าวอีกนัยหนึ่ง ช่วยให้คุณสามารถกำหนดทางเลือกอีกสองสาขาของการดำเนินการเพิ่มเติมได้ ขอแนะนำให้ใส่ตัวดำเนินการแบบไตรภาคไว้ในวงเล็บ


ลำดับความสำคัญในการดำเนินการของตัวดำเนินการ
ลำดับความสำคัญของตัวดำเนินการจะกำหนดว่านิพจน์ทั้งสอง "ใกล้เคียงกัน" มีความสัมพันธ์กันอย่างไร ตัวอย่างเช่น นิพจน์ 1 + 5 * 3 ประเมินเป็น 16 มากกว่า 18 เนื่องจากตัวดำเนินการคูณ ("*") มีลำดับความสำคัญสูงกว่าตัวดำเนินการบวก ("+") หากตัวดำเนินการมีลำดับความสำคัญเท่ากัน พวกเขาจะถูกดำเนินการจากซ้ายไปขวา วงเล็บสามารถใช้เพื่อบังคับลำดับการดำเนินการคำสั่งที่จำเป็น ตัวอย่างเช่น นิพจน์ (1 + 5) * 3 ประเมินเป็น 18
ตารางต่อไปนี้แสดงรายการตัวดำเนินการ จัดเรียงตามลำดับความสำคัญจากมากไปน้อย ผู้ดำเนินการที่อยู่ในบรรทัดเดียวกันจะมีลำดับความสำคัญเท่ากัน และลำดับการดำเนินการจะพิจารณาจากความสัมพันธ์ของพวกเขา


ตารางที่ 15-1. คำสั่งการดำเนินการของผู้ปฏิบัติงาน

การเชื่อมโยงผู้ดำเนินการ
ไม่เกี่ยวข้องใหม่
ขวา[
ไม่เกี่ยวข้อง++ --
ไม่เกี่ยวข้อง- ~ - (int) (ลอย) (สตริง) (อาร์เรย์) (วัตถุ) @
ซ้าย* / %
ซ้าย+ - .
ซ้าย<< >>
ไม่เกี่ยวข้อง < <= > >=
ไม่เกี่ยวข้อง== != === !==
ซ้าย&
ซ้าย^
ซ้าย|
ซ้าย&&
ซ้าย||
ซ้าย? :
ขวา= += -= *= /= .= %= &= |= ^= <<= >>=
ซ้ายและ
ซ้ายเอ็กซ์ออร์
ซ้ายหรือ
ซ้าย,

การเชื่อมโยงด้านซ้ายบอกเป็นนัยว่านิพจน์ถูกประเมินจากซ้ายไปขวา การเชื่อมโยงทางขวาตามลำดับแสดงถึงลำดับที่ตรงกันข้าม ตัวอย่างที่ 15-1 การเชื่อมโยง
$a = 5, $b = 5 ?>
คุณสามารถใช้วงเล็บเพื่อทำให้โค้ดของคุณอ่านง่ายขึ้น
หมายเหตุ: ทั้งๆ ที่ผู้ประกอบการ! มีลำดับความสำคัญสูงกว่า = PHP อนุญาตให้ใช้โครงสร้างต่อไปนี้: if (!$a = foo()) ซึ่งกำหนดตัวแปร $a ซึ่งเป็นผลลัพธ์ของการดำเนินการฟังก์ชัน foo()


ตัวดำเนินการทางคณิตศาสตร์
จำพื้นฐานของคณิตศาสตร์ของโรงเรียนได้ไหม? ข้อความด้านล่างทำงานในลักษณะเดียวกัน


ตารางที่ 15-2. การดำเนินการทางคณิตศาสตร์

ตัวอย่างชื่อผลลัพธ์
-$กการปฏิเสธเปลี่ยนเครื่องหมาย $a
$ก + $ขส่วนที่เพิ่มเข้าไปผลรวมของ $a และ $b
$ก - $ขการลบความแตกต่างระหว่าง $a และ $b
$ก * $ขการคูณผลคูณของ $a และ $b
$ก / $ขแผนกผลหารของ $a หารด้วย $b
$a % $bแผนกโมดูโล่เศษจำนวนเต็มเมื่อ $a หารด้วย $b

ตัวดำเนินการหาร ("/") จะส่งกลับประเภทจริงเสมอ แม้ว่าทั้งสองค่าจะเป็นจำนวนเต็ม (หรือสตริงที่แปลงเป็นจำนวนเต็ม)
หมายเหตุ: ส่วนที่เหลือของ $a % $b จะเป็นค่าลบสำหรับค่าลบของ $a
คุณสามารถตรวจสอบส่วนเอกสารประกอบ ฟังก์ชันทางคณิตศาสตร์ ได้


ตัวดำเนินการบิต
ตัวดำเนินการ Bitwise อนุญาตให้คุณตั้งค่าบิตเฉพาะเป็น 0 หรือ 1 สำหรับค่าจำนวนเต็ม ถ้าทั้งตัวถูกดำเนินการด้านซ้ายและขวาเป็นสตริง การดำเนินการระดับบิตจะทำงานบนการแสดงค่า ASCII


ตารางที่ 15-3. ตัวดำเนินการ Bitwise

ตัวอย่างชื่อผลลัพธ์
$a & $bบิตไวซ์ "และ"เฉพาะบิตที่ตั้งค่าไว้ในทั้ง $a และ $b เท่านั้นที่ถูกตั้งค่า
$a | $ขบิต "หรือ"บิตเหล่านั้นที่ถูกตั้งค่าเป็น $a หรือ $b จะถูกตั้งค่า
$a^$bพิเศษหรือเฉพาะบิตที่ตั้งค่าไว้เฉพาะใน $a หรือเฉพาะใน $b เท่านั้นที่ถูกตั้งค่า
~$กการปฏิเสธบิตเหล่านั้นที่ไม่ได้ตั้งค่าใน $a จะถูกตั้งค่า และในทางกลับกัน
$ก<< $b เลื่อนไปทางซ้ายบิตของตัวแปร $a ทั้งหมดถูกเลื่อนตำแหน่ง $b ไปทางซ้าย (แต่ละตำแหน่งหมายถึง "คูณด้วย 2")
$ก >> $ขเลื่อนไปทางขวาบิตของตัวแปร $a ทั้งหมดจะถูกเลื่อนตำแหน่ง $b ไปทางขวา (แต่ละตำแหน่งหมายถึง "หารด้วย 2")

ความสนใจ
อย่าเลื่อนไปทางขวาเกิน 32 บิตบนระบบสามสิบสองบิต อย่าใช้การเลื่อนไปทางขวาเพื่อให้ได้ตัวเลขที่ต้องเขียนมากกว่าสามสิบสองบิต


ตัวดำเนินการเชิงตรรกะ
ตารางที่ 15-6. ตัวดำเนินการเชิงตรรกะ

เหตุผลสำหรับสองตัวเลือกที่แตกต่างกันสำหรับตัวดำเนินการ และ และ หรือ คือ พวกมันทำงานโดยมีลำดับความสำคัญที่แตกต่างกัน (ดูตารางลำดับความสำคัญของการดำเนินการของตัวดำเนินการ)

ไวยากรณ์ PHP พื้นฐาน

คำสั่ง if-then-else แบบมีเงื่อนไข ไวยากรณ์ทางเลือก

ถ้าคำสั่ง
นี่เป็นหนึ่งในโอเปอเรเตอร์ที่สำคัญที่สุดในหลายภาษา รวมถึง PHP ด้วย ช่วยให้คุณสามารถรันโค้ดบางส่วนตามเงื่อนไขได้ โครงสร้างของคำสั่ง if สามารถแสดงได้ดังนี้:
ถ้า (การแสดงออก) การดำเนินการ_บล็อก
ในที่นี้นิพจน์คือนิพจน์ PHP ที่ถูกต้อง (เช่น สิ่งใดก็ตามที่สำคัญ) ในระหว่างการประมวลผลสคริปต์ นิพจน์จะถูกแปลงเป็นประเภทบูลีน หากผลลัพธ์ของการแปลงคือนิพจน์เป็น True ระบบจะประมวลผลExecution_block มิฉะนั้นExecution_blockจะถูกละเว้น หาก act_block มีหลายคำสั่ง จะต้องอยู่ในเครื่องหมายปีกกา ( )


กฎสำหรับการแปลงนิพจน์เป็นประเภทบูลีน:

  1. ค่าต่อไปนี้จะถูกแปลงเป็น FALSE:
  • ตรรกะเท็จ
  • ศูนย์ทั้งหมด (0)
  • ศูนย์จริง (0.0)
  • บรรทัดว่างและบรรทัด 0
  • อาร์เรย์ที่ไม่มีองค์ประกอบ
  • วัตถุที่ไม่มีตัวแปร (วัตถุจะกล่าวถึงรายละเอียดในการบรรยายเรื่องใดเรื่องหนึ่งต่อไปนี้)
  • ประเภทพิเศษ NULL
  1. ค่าอื่นๆ ทั้งหมดจะถูกแปลงเป็น TRUE

ตัวอย่างที่ 3.1 คำสั่งแบบมีเงื่อนไข if (html, txt)
100*$bax+3) echo "บรรทัดนี้จะไม่ปรากฏบนหน้าจอเนื่องจากไม่ตรงตามเงื่อนไข"; -


ตัวดำเนินการอื่น
เราได้ดูเพียงส่วนเดียวซึ่งเป็นส่วนหลักของคำสั่ง if มีส่วนขยายหลายประการสำหรับตัวดำเนินการนี้ คำสั่ง else จะขยายออกไปหากนิพจน์ที่ถูกทดสอบ if เป็นเท็จ และอนุญาตให้คุณดำเนินการบางอย่างภายใต้เงื่อนไขดังกล่าว
โครงสร้างของคำสั่ง if ที่ขยายออกไปพร้อมกับคำสั่ง else สามารถแสดงได้ดังนี้:
ถ้า (นิพจน์)Execution_block อย่างอื่นExecution_block1
โครงสร้าง if...else สามารถตีความได้ดังนี้: หากตรงตามเงื่อนไข (เช่น นิพจน์ = true) เราจะดำเนินการจากการดำเนินการจาก allowance_block ไม่เช่นนั้นเราจะดำเนินการจากการดำเนินการจาก allowance_block1 ไม่จำเป็นต้องใช้ตัวดำเนินการ else
มาดูกันว่าเราจะเปลี่ยนแปลงตัวอย่างก่อนหน้านี้ได้อย่างไร โดยคำนึงถึงความจำเป็นในการดำเนินการแม้ว่าจะไม่ตรงตามเงื่อนไขก็ตาม


ตัวอย่างที่ 3.2 ตัวดำเนินการอื่น (html, txt)
100*$bax+3) echo "บรรทัดนี้จะไม่ปรากฏบนหน้าจอเนื่องจากไม่ตรงตามเงื่อนไข";


อย่างอื่นก้อง "แต่บรรทัดนี้จะปรากฏขึ้น!"; -
ตัวดำเนินการอื่น
อีกวิธีหนึ่งในการขยายคำสั่ง if แบบมีเงื่อนไขคือการใช้คำสั่ง elseif elseif คือการรวมกันของ else และ if เช่นเดียวกับอย่างอื่น มันจะขยายออกไปหากจะดำเนินการต่างๆ หากเงื่อนไขที่ถูกทดสอบหากเป็นเท็จ แต่ไม่เหมือนกับอย่างอื่น การดำเนินการทางเลือกจะถูกดำเนินการก็ต่อเมื่อเงื่อนไขelseifเป็นจริงเท่านั้น โครงสร้างของคำสั่ง if ซึ่งขยายไปพร้อมกับคำสั่ง else และ elseif สามารถแสดงได้ดังนี้:
ถ้า (นิพจน์)Execution_block elseif (expression1)Execution_block1 ... อย่างอื่นExecution_blockN


อาจมีคำสั่ง elseif หลายคำสั่งในหนึ่งคำสั่ง if block คำสั่ง Elseif จะถูกดำเนินการก็ต่อเมื่อเงื่อนไข if ก่อนหน้าเป็นเท็จ เงื่อนไข elseif ก่อนหน้าทั้งหมดเป็นเท็จ และเงื่อนไข elseif ที่กำหนดเป็น True
ไวยากรณ์ทางเลือก
PHP นำเสนอไวยากรณ์ทางเลือกสำหรับโครงสร้างการควบคุมบางส่วน เช่น if, while, for, foreach และ switch ในแต่ละกรณี วงเล็บเปิดจะต้องแทนที่ด้วยเครื่องหมายทวิภาค (:) และวงเล็บปิดด้วย endif;, end While; ฯลฯ ตามลำดับ
ตัวอย่างเช่น ไวยากรณ์ของคำสั่ง if สามารถเขียนได้ดังนี้:
ถ้า (การแสดงออก): การดำเนินการ_บล็อก endif;


ความหมายยังคงเหมือนเดิม: หากเงื่อนไขที่เขียนในวงเล็บของคำสั่ง if กลายเป็นจริง โค้ดทั้งหมดจะถูกดำเนินการ ตั้งแต่เครื่องหมายทวิภาค ">:" ไปจนถึงคำสั่ง endif การใช้ไวยากรณ์นี้มีประโยชน์เมื่อฝัง php ลงในโค้ด html
ตัวอย่างที่ 3.4 การใช้ไวยากรณ์ทางเลือก (html, txt)
สวัสดี Vanya!


หากใช้โครงสร้าง else และ elseif ก็สามารถใช้ไวยากรณ์ทางเลือกได้:
โครงสร้างอื่นที่ช่วยให้คุณสามารถตรวจสอบเงื่อนไขและดำเนินการต่าง ๆ ขึ้นอยู่กับสวิตช์ ชื่อของโอเปอเรเตอร์นี้สามารถแปลเป็นภาษารัสเซียว่า "สวิตช์" และนั่นคือความหมายของมันจริงๆ ตัวแปรจะสลับระหว่างบล็อกการดำเนินการต่างๆ ขึ้นอยู่กับค่าของตัวแปร switch คล้ายกับคำสั่ง if...elseif...else หรือชุดคำสั่ง if มาก โครงสร้างสวิตช์สามารถเขียนได้ดังนี้:
สวิตช์ (นิพจน์หรือตัวแปร) ( case value1: action_block1 break; case value2: action_block2 break; ... default: default_action_block)
ต่างจากถ้าค่าของนิพจน์ไม่ได้แปลงเป็นประเภทบูลีน แต่เพียงเปรียบเทียบกับค่าที่แสดงอยู่หลังคีย์เวิร์ด case (value1, value2 ฯลฯ ) หากค่าของนิพจน์ตรงกับตัวเลือกใด ๆ บล็อกการดำเนินการที่เกี่ยวข้องจะถูกดำเนินการ - จากโคลอนหลังค่าที่ตรงกันไปจนถึงจุดสิ้นสุดของสวิตช์หรือไปยังคำสั่งแบ่งแรกหากพบ หากค่าของนิพจน์ไม่ตรงกับตัวเลือกใด ๆ การดำเนินการเริ่มต้น (default_action_block) ที่อยู่หลังคำหลักเริ่มต้นจะถูกดำเนินการ นิพจน์ในสวิตช์จะได้รับการประเมินเพียงครั้งเดียว แต่นิพจน์ในคำสั่ง elseif จะได้รับการประเมินทุกครั้ง ดังนั้นหากนิพจน์ค่อนข้างซับซ้อน สวิตช์ก็จะเร็วขึ้น


ตัวอย่าง 3.3 สามารถเขียนใหม่ได้โดยใช้สวิตช์ดังนี้

หากในตัวอย่างนี้เราละเว้นคำสั่งแบ่ง เช่น ในกรณี “Peter”: ถ้าตัวแปรเท่ากับสตริง “Peter” หลังจากแสดงข้อความ “Hello, Petya!” โปรแกรมจะไปต่อและแสดงข้อความ “Hello, Senya!” และเมื่อถึงจุดแตกหักแล้ว จะดำเนินการต่อไปนอกสวิตช์หรือไม่
สำหรับโครงสร้างสวิตช์ เหมือนกับว่า ไวยากรณ์ทางเลือกเป็นไปได้ โดยที่เครื่องหมายปีกกาเปิดของสวิตช์ถูกแทนที่ด้วยโคลอน และเครื่องหมายปีกกาปิดจะถูกแทนที่ด้วยเอ็นด์สวิตช์ ตามลำดับ

ตัวดำเนินการวนซ้ำ: สำหรับ, ในขณะที่, foreach, ตัวเลือกไวยากรณ์

สำหรับ
For loops เป็นลูป PHP ที่ซับซ้อนที่สุด พวกเขาประพฤติตนเหมือนกับคู่หู C ของพวกเขา
ไวยากรณ์ของ for loop คือ: for (expr1; expr2; expr3) คำสั่ง
นิพจน์แรก (expr1) ได้รับการประเมิน (ดำเนินการ) หนึ่งครั้งและไม่มีเงื่อนไขที่จุดเริ่มต้นของลูป
เมื่อเริ่มต้นการวนซ้ำแต่ละครั้ง จะมีการคำนวณ expr2 หากประเมินเป็น TRUE การวนซ้ำจะดำเนินต่อไปและคำสั่งที่ซ้อนกันจะถูกดำเนินการ หากประเมินเป็น FALSE การวนซ้ำจะสิ้นสุดลง
เมื่อสิ้นสุดการวนซ้ำแต่ละครั้ง จะมีการคำนวณ expr3 (ดำเนินการ)
แต่ละนิพจน์สามารถเว้นว่างได้ expr2 ที่ว่างเปล่าหมายความว่าลูปควรทำงานอย่างไม่มีกำหนด (PHP สันนิษฐานโดยปริยายว่าเงื่อนไขนี้เป็น TRUE เช่นเดียวกับใน C) สิ่งนี้อาจไม่ไร้จุดหมายอย่างที่คิด เนื่องจากบ่อยครั้งจำเป็นต้องจบลูปด้วยคำสั่ง break แทนที่จะใช้การทดสอบนิพจน์แบบมีเงื่อนไข for loop
ลองพิจารณาตัวอย่างต่อไปนี้ พวกเขาทั้งหมดเอาท์พุทตัวเลขตั้งแต่ 1 ถึง 10:
/* ตัวอย่างที่ 1 */ สำหรับ ($i = 1; $i<= 10; $i++) { print $i; } /* пример 2 */ for ($i = 1;;$i++) { if ($i >10) ( แบ่ง; ) พิมพ์ $i; ) /* ตัวอย่าง 3 */ $i = 1; สำหรับ (;;) ( if ($i > 10) ( break; ) พิมพ์ $i; $i++; ) /* ตัวอย่าง 4 */ for ($i = 1; $i<= 10; print $i, $i++);
แน่นอนว่าตัวอย่างแรกดูเหมือนจะน่าดึงดูดที่สุด (หรือบางทีอาจเป็นตัวอย่างที่สี่) แต่คุณอาจพบว่าความสามารถในการใช้นิพจน์ว่างใน for loops นั้นมีประโยชน์ในหลาย ๆ สถานการณ์
PHP ยังรองรับ "ไวยากรณ์โคลอน" สำหรับ for loops
สำหรับ (expr1; expr2; expr3): คำสั่ง; - สิ้นสุด;


ในขณะที่
ในขณะที่ลูปเป็นลูปที่ง่ายที่สุดใน PHP พวกเขาประพฤติตนเหมือนคู่หู C ของพวกเขา
นี่คือรูปแบบพื้นฐานของคำสั่ง while: while (expr) คำสั่ง
ค่าของตัวดำเนินการ while คือ 3 (สาม) รูเบิล มันบอกให้ PHP ดำเนินการคำสั่งที่ซ้อนกันซ้ำ ๆ ในขณะที่ expr ประเมินค่าเป็น TRUE ค่าของนิพจน์จะถูกตรวจสอบแต่ละครั้งที่จุดเริ่มต้นของลูป ดังนั้นหากค่านั้นเปลี่ยนแปลงในขณะที่ดำเนินการคำสั่งที่ซ้อนกัน การดำเนินการจะไม่หยุดจนกว่าจะสิ้นสุดการวนซ้ำนั้น (แต่ละครั้งที่ PHP ดำเนินการคำสั่งทั้งหมดใน การวนซ้ำเรียกว่าการวนซ้ำหนึ่งครั้ง) บางครั้ง ถ้า expr ประเมินเป็น FALSE ที่จุดเริ่มต้นของลูป คำสั่งที่ซ้อนกันอาจไม่สามารถดำเนินการได้แม้แต่ครั้งเดียว
เช่นเดียวกับคำสั่ง if คุณสามารถสร้างกลุ่มของคำสั่งภายในลูป while โดยใช้เครื่องหมายปีกกา () หรือใช้ไวยากรณ์ทางเลือก: while (expr): คำสั่ง ... end While;
ตัวอย่างต่อไปนี้เหมือนกันและพิมพ์ตัวเลขตั้งแต่ 1 ถึง 10 ทั้งคู่:
/* ตัวอย่าง 1 */ $i = 1; ในขณะที่ ($i<= 10) { print $i++; /* будет печататься значение $i до инкремента (пост-инкремент) */ } /* пример 2 */ $i = 1; while ($i <= 10): print $i; $i++; endwhile;


ทำ..ในขณะที่
Do.. While loop นั้นคล้ายคลึงกับ while loop มาก แต่นิพจน์เงื่อนไขจะถูกทดสอบเมื่อสิ้นสุดการวนซ้ำแต่ละครั้ง แทนที่จะทดสอบที่จุดเริ่มต้น ข้อแตกต่างที่สำคัญจาก while แบบปกติก็คือ การวนซ้ำครั้งแรกของ do.. While loop จะถูกดำเนินการเสมอ (เงื่อนไขจะถูกตรวจสอบเมื่อสิ้นสุดการวนซ้ำเท่านั้น) ในขณะที่การวนซ้ำ while อาจไม่เป็นเช่นนั้น (เงื่อนไข จะถูกตรวจสอบที่จุดเริ่มต้นของการวนซ้ำแต่ละครั้ง และหากประเมินเป็น FALSE ทันทีที่จุดเริ่มต้น การดำเนินการของลูปจะถูกขัดจังหวะทันที)
มีตัวเลือกไวยากรณ์หนึ่งตัวเลือกสำหรับ do.. While ลูป:
$i = 0; ทำ (พิมพ์ $i; ) ในขณะที่ ($i>0);
การวนซ้ำด้านบนจะถูกสำรวจเพียงครั้งเดียว เนื่องจากหลังจากผ่านครั้งแรก การทดสอบนิพจน์แบบมีเงื่อนไขจะส่งกลับค่า FALSE ($i ไม่เกิน 0) และการวนซ้ำจะสิ้นสุดลง
ผู้ใช้ C ขั้นสูงอาจคุ้นเคยกับการใช้ do.. While loop ในลักษณะอื่น ซึ่งช่วยให้การดำเนินการหยุดกลางบล็อกของโค้ดโดยการห่อหุ้มไว้ใน do.. While(0) และใช้คำสั่งแบ่ง ตัวอย่างต่อไปนี้แสดงให้เห็นสิ่งนี้:
ทำ ( ถ้า ($i< 5) { print "i is not big enough"; break; } $i *= $factor; if ($i < $minimum_limit) { break; } print "i is ok"; ...обработка i... } while(0);
ไม่ต้องกังวลหากคุณเข้าใจเพียงเล็กน้อยหรือไม่เข้าใจเลย คุณสามารถเขียนโค้ดสคริปต์และแม้แต่แอปพลิเคชันที่มีคุณสมบัติครบถ้วนได้โดยไม่ต้องใช้ "คุณสมบัติ" นี้


foreach
PHP 4 (ไม่ใช่ PHP 3) มีโครงสร้าง foreach ที่ชวนให้นึกถึง Perl และภาษาอื่นๆ มันมีวิธีง่ายๆ ในการวนซ้ำผ่านอาร์เรย์ ไวยากรณ์มีสองประเภท: ประเภทที่สองเป็นส่วนขยายของประเภทแรกและใช้บ่อยน้อยกว่า:
คำสั่ง foreach(array_expression as $value)
คำสั่ง foreach(array_expression as $key => $value)
ชนิดแรกวนซ้ำผ่านอาร์เรย์ที่ระบุโดย array_expression ในการผ่านแต่ละครั้ง ค่าขององค์ประกอบปัจจุบันจะถูกกำหนดให้กับตัวแปร $value และตัวชี้อาร์เรย์ภายในจะเลื่อนไปข้างหน้าหนึ่งตัว (ดังนั้นในการผ่านครั้งถัดไป คุณจะดูค่าขององค์ประกอบถัดไป)
ประเภทที่สองทำสิ่งเดียวกัน แต่คีย์ขององค์ประกอบปัจจุบันถูกกำหนดให้กับตัวแปร $key
หมายเหตุ: เมื่อเริ่มต้น foreach ตัวชี้อาร์เรย์ภายในจะถูกตั้งค่าเป็นองค์ประกอบแรกของอาร์เรย์โดยอัตโนมัติ ซึ่งหมายความว่าคุณไม่จำเป็นต้องโทรไปรีเซ็ต() ก่อนที่จะเริ่ม foreach loop
หมายเหตุ: โปรดทราบด้วยว่า foreach ดำเนินการกับสำเนาของอาร์เรย์ที่ระบุ ไม่ใช่บนอาร์เรย์เอง ดังนั้นตัวชี้อาร์เรย์จึงไม่ได้รับการแก้ไขเหมือนกับแต่ละ () และการเปลี่ยนแปลงองค์ประกอบอาร์เรย์ที่ส่งคืนจะไม่ส่งผลต่ออาร์เรย์ดั้งเดิม
หมายเหตุ: foreach ไม่รองรับความสามารถในการระงับข้อความแสดงข้อผิดพลาดโดยใช้ "@"
โปรดทราบว่าตัวเลือกต่อไปนี้มีฟังก์ชันการทำงานเหมือนกัน:
รีเซ็ต($arr); ในขณะที่ (list(, $value) = แต่ละ ($arr)) ( echo "Value: $value
\n"; ) foreach ($arr เป็น $value) ( ​​​​echo "Value: $value
\n"; )
ตัวเลือกต่อไปนี้มีฟังก์ชันการทำงานเหมือนกัน:
รีเซ็ต($arr); ในขณะที่ (list($key, $value) = แต่ละ ($arr)) ( echo "Key: $key; Value: $value
\n"; ) foreach ($arr as $key => $value) ( ​​​​echo "Key: $key; Value: $value
\n"; )
ตัวอย่างการใช้งานเพิ่มเติม:
/* ตัวอย่างที่ 1: เฉพาะค่า */ $a = array (1, 2, 3, 17); foreach ($a as $v) ( print "มูลค่าปัจจุบันของ \$a: $v.\n"; ) /* foreach ตัวอย่างที่ 2: value (พร้อมคีย์ที่พิมพ์ไว้เพื่อแสดงภาพประกอบ) */ $a = array (1, 2 , 3, 17); $i = 0; /* สำหรับภาพประกอบเท่านั้น */ foreach($a as $v) ( print "\$a[$i] => $v.\n"; $i++; ) /* foreach ตัวอย่างที่ 3: key\key และ value\ ค่า */ $a = array ("หนึ่ง" => 1, "สอง" => 2, "สาม" => 3, "สิบเจ็ด" => 17); foreach($a as $k => $v) ( print "\$a[$k] => $v.\n"; )


หยุดพัก
break สิ้นสุดการดำเนินการของโครงสร้างปัจจุบัน (วนซ้ำ) สำหรับ, foreach, while, do.. While หรือ switch
break รับอาร์กิวเมนต์ตัวเลขที่เป็นตัวเลือกซึ่งระบุจำนวนโครงสร้างการซ้อนที่มีการทำลายการดำเนินการ
$arr = array("หนึ่ง", "สอง", "สาม", "สี่", "หยุด", "ห้า"); ในขณะที่ (list (, $val) = แต่ละ ($arr)) ( if ($val == "stop") ( break; /* คุณยังสามารถเขียน "break 1;" */ ) echo "$val
\n"; ) /* ใช้อาร์กิวเมนต์เผื่อเลือก */ $i = 0; while (++$i) ( switch ($i) ( case 5: echo "At 5)
\n"; break 1; /* Exit switch only. */ case 10: echo "At 10; เลิก
\n"; break 2; /* Exit switch และ while. */ default: break; ) )


ดำเนินการต่อ
Continue ใช้ในโครงสร้างลูปเพื่อข้ามส่วนที่เหลือของการวนซ้ำปัจจุบันของลูป และดำเนินการดำเนินการต่อจากจุดเริ่มต้นของการวนซ้ำครั้งถัดไป (ผ่าน) ของลูป
ดำเนินการต่อ รับอาร์กิวเมนต์ตัวเลขซึ่งเป็นทางเลือกซึ่งระบุจำนวนลูปที่มีระดับต่างๆ ที่จะข้ามไปยังจุดสิ้นสุด
ในขณะที่ (list ($key, $value) = แต่ละ ($arr)) ( if (!($key % 2)) ( // ข้ามสมาชิกคี่ ดำเนินการต่อ; ) do_something_odd ($value); ) $i = 0; ในขณะที่ ($i++< 5) { echo "Outer
\n"; ในขณะที่ (1) ( echo "& & Middle
\n"; ในขณะที่ (1) ( echo "& & Inner
\n"; Continue 3; ) echo "สิ่งนี้ไม่เคยได้รับเอาต์พุต
\n"; ) echo "ก็ไม่ทำเช่นนี้
\n"; )

รวมโค้ดจากไฟล์: ทำไมคุณต้องรวมโค้ดจากไฟล์, ไฟล์อะไรที่สามารถรวมได้, รวมโอเปอเรเตอร์ต้องการ, รวม, ป้องกันการซ้ำกัน (include_once, need_once)

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


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

ระบบเวิร์กโฟลว์

การนำทาง

ลงทะเบียน


ในไฟล์ที่สองซึ่งเราจะเรียกว่า Bottom.txt ให้เพิ่มบรรทัดต่อไปนี้:



บันทึกไฟล์ในไดเร็กทอรีเดียวกับที่มีไฟล์ register.php อยู่แล้ว


รวมตัวดำเนินการ
ตอนนี้เรามารวมไฟล์ที่เราสร้างไว้ในหน้าการลงทะเบียนกันดีกว่า ทำการเปลี่ยนแปลงต่อไปนี้กับไฟล์ register.php:

ลงทะเบียนสำหรับบัญชี:

ชื่อผู้ใช้:
อีเมล:
รหัสผ่าน:
รหัสผ่าน (อีกครั้ง):

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


ต้องมีคำสั่งรวม
หาก PHP ไม่พบไฟล์ส่วนหัวหรือส่วนท้าย ถือว่าแย่ แต่ก็ไม่ร้ายแรง แอปพลิเคชันจะยังคงใช้งานได้ หากไฟล์ที่ระบุในคำสั่ง include หายไป PHP จะออกคำเตือนและดำเนินการประมวลผลเพจต่อ
อย่างไรก็ตาม ในบางกรณี การไม่มีไฟล์รวมถือเป็นหายนะ ตัวอย่างเช่น เราอาจตัดสินใจว่าการวางฟังก์ชัน validate() และ db_connect() ไว้ในไฟล์แยกต่างหากจะเป็นประโยชน์ จากนั้นจึงรวมไฟล์นั้นไว้ใน register_action.php โดยใช้คำสั่ง include หาก PHP ไม่พบไฟล์ฟังก์ชันแต่ไม่หยุดทำงาน ก็จะเกิดปัญหามากมายตามมา เพื่อป้องกันสถานการณ์นี้ คุณควรใช้คำสั่ง need แทนการรวม:

คุณป้อน:

$value) ( ​​​​เอคโค่ "

".$คีย์" = " . $มูลค่า . "

"; ) $passwords = $_POST["pword"]; echo "รหัสผ่านแรก = ".$passwords; echo "
"; echo "รหัสผ่านที่สอง = ".$passwords; if (ตรวจสอบ($_POST) == "ตกลง") ( echo "

ขอบคุณสำหรับการลงทะเบียน!

"; ...
โดยทั่วไป คำสั่ง need จะทำงานเหมือนกับคำสั่ง include แต่ถ้า PHP ไม่พบไฟล์ include จะรายงานข้อผิดพลาดร้ายแรงและสคริปต์จะหยุดทำงาน


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

คุณป้อน:

$value) ( ​​​​เอคโค่ "

".$คีย์" = " . $มูลค่า . "

"; } ...
เมื่อ PHP พบคำสั่ง include_once หรือ need_once มันจะตรวจสอบว่าไฟล์ที่ระบุได้ถูกรวมไว้แล้วหรือไม่ ซึ่งจะช่วยป้องกันไม่ให้รวมไฟล์ที่ซ้ำกันเข้าด้วยกัน

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

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

บล็อก PHP

สิ่งแรกที่คุณควรรู้คือโค้ด PHP ควรอยู่ในแท็ก PHP เสมอ:

คุณยังสามารถใช้:

อันดับแรกแต่ละคำสั่ง (นิพจน์) จะต้องลงท้ายด้วยเครื่องหมายอัฒภาค ตัวอย่างเช่น:

//บอก PHP ให้แสดงข้อผิดพลาดทั้งหมดที่เกี่ยวข้องให้เราทราบ header("ประเภทเนื้อหา: text/html; charset=utf-8"); // การเข้ารหัส echo "สคริปต์ PHP แรกของเราใช้งานได้!
"; //ส่งออกข้อความไปยังเพจ ?>

ที่สองเหมือนกันทั้งหมดสามารถเขียนเป็นบรรทัดเดียวระหว่างคำสั่งในหนึ่งบรรทัด คุณสามารถใส่ช่องว่างได้มากเท่าที่คุณต้องการ โดยไม่ต้องเว้นวรรคเลย:

"; ?>

ที่สามคำสั่ง PHP สามารถแบ่งออกเป็นหลายบรรทัด:

"; ?>

ผลลัพธ์:

เราสังเกตเห็นว่าเบราว์เซอร์ตีความแต่ละบรรทัดใหม่เป็นพื้นที่ปกติ ซึ่งเป็นสิ่งที่เราคาดหวัง

ที่สี่, PHP ก็เหมือนกับภาษาโปรแกรมอื่นๆ ที่มีการแสดงความคิดเห็น PHP มี 2 ประเภท: บรรทัดเดียวและหลายบรรทัด

// - ความคิดเห็นบรรทัดเดียว # - นี่เป็นความคิดเห็นบรรทัดเดียวด้วย /* ความคิดเห็นของคุณ */- ความคิดเห็นหลายบรรทัด

มีความเห็นว่าสำหรับโปรแกรมเมอร์ที่ดี ความคิดเห็นควรประกอบด้วย 30% ของโค้ดทั้งหมด อย่างไรก็ตาม ความคิดเห็นที่ซ้ำซ้อนก็ไม่จำเป็นอย่างยิ่งเช่นกัน คุณไม่ควรแสดงความคิดเห็นเช่น "ฉันมองออกไปนอกหน้าต่างและเกาจมูก"

การส่งออกข้อมูลใน PHP

เอาต์พุตข้อมูลในภาษาการเขียนโปรแกรม PHP ดำเนินการโดยใช้โครงสร้างภาษาหลักสองภาษา:

"; พิมพ์ "นี่คือข้อความเดียวกันทุกประการ"; ?>

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

", "สคริปต์ PHP แรกของเราใช้งานได้!", "";
//เช่นกัน แต่ใช้การพิมพ์:พิมพ์ "

"; print "สคริปต์ PHP แรกของเราใช้งานได้!"; print "

"; ?>

ดังนั้นนอกเหนือจากความจริงที่ว่าเสียงสะท้อนนั้นสั้นกว่าการพิมพ์ 1 อักขระแล้ว ยังช่วยให้คุณเขียนโครงสร้างเอาต์พุตได้สั้นยิ่งขึ้นอีกด้วย เครื่องหมายจุลภาคแต่ละตัวในตัวอย่างข้างต้นจำลองการเรียกเสียงสะท้อนใหม่ กล่าวอีกนัยหนึ่ง เราเรียก echo สามครั้ง แทนที่จะเขียนในแต่ละครั้ง: echo echo echo เหมือนที่เราทำในกรณีของการพิมพ์

อย่างไรก็ตามสิ่งเดียวกันสามารถเขียนได้ดังนี้:

นี่คือสิ่งที่ฉันหมายถึงในบทความก่อนหน้านี้เมื่อฉันพูดถึงเรื่องนั้น

ตัวแปรในภาษาการเขียนโปรแกรมใดๆ ใช้เพื่อจัดเก็บข้อมูลบางอย่างภายในตัวมันเอง กล่าวคือ ตัวแปรคือเรือของเรา เราสามารถใส่สิ่งหนึ่งไว้ตรงนั้นก่อน จากนั้นจึงลบสิ่งแรกออกแล้วใส่สิ่งที่สอง หรือเราจะปล่อยสิ่งแรกและเพิ่มสิ่งที่สอง (และอันที่สาม ฯลฯ)

ตัวแปรใน PHP เริ่มต้นในเชิงสัญลักษณ์ โดยมีเครื่องหมายดอลลาร์ $ ตามด้วยตัวอักษรละตินหรือขีดล่างโดยไม่มีการเว้นวรรค (ตัวเลขไม่สามารถเป็นอักขระตัวแรกในชื่อตัวแปรได้) นอกจากนี้ ชื่อตัวแปรอาจมีทั้งตัวอักษรละตินและตัวเลข และมีอักขระขีดล่างเหมือนกัน ตัวอย่างเช่น:

$name="เซอร์เกย์"; $_blog1="ไซต์บน!";
echo $name, " - ผู้เขียนบล็อก", $_blog1; -

ผลลัพธ์:

ชื่อตัวแปรต้องคำนึงถึงขนาดตัวพิมพ์! นั่นคือ $Name, $naMe, $name เป็นตัวแปรสามตัวที่แตกต่างกันโดยสิ้นเชิง หากเราต้องการใส่สิ่งใหม่ลงในตัวแปรที่มีอยู่ ค่าเก่าของตัวแปรนี้จะถูกลบโดยอัตโนมัติ:

$name="เซอร์เกย์"; $_blog1="ไซต์บน!"; $name="อันเดรย์"; //เขียนค่าใหม่ให้กับตัวแปรชื่อ
echo $name, " - ผู้เขียนบล็อก", $_blog1; -

ผลลัพธ์:

โดยปกติแล้ว เราสามารถส่งผ่านค่าของตัวแปรหนึ่งไปยังอีกตัวแปรหนึ่งได้:

$name = "เซอร์เกย์"; $_blog1 = "ไซต์บน!"; $ชื่อ = $_blog1;
echo $name, " - ผู้เขียนบล็อก", $_blog1; -

ผลลัพธ์:

อย่างไรก็ตาม ค่าของตัวแปร $_blog1 จะยังคงอยู่ในนั้น

ต่างจากสตริงตรงที่เมื่อป้อนตัวเลขลงในตัวแปร ไม่จำเป็นต้องใช้เครื่องหมายคำพูด:

$ชื่อ = 45;

เหมือนกับการใส่ตัวแปรเข้าไปในตัวแปร:

$ชื่อ = $_blog1;

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

$name="เซอร์เกย์"; $_blog1="ไซต์บน!"; $name=$_blog1; ไม่ได้ตั้งค่า($ชื่อ); //ลบตัวแปรชื่อออก
echo $name, " - ผู้เขียนบล็อก", $_blog1; -

ผลลัพธ์:

การจัดการกับข้อผิดพลาดใน PHP

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

PHP ยังพยายามบอกเราว่าเราทำผิดพลาดที่ไหนและอย่างไร ในกรณีของเราเขาเขียนว่า:

ตัวแปรที่ไม่ได้กำหนด: ชื่อ

ซึ่งแปลว่า “ตัวแปรที่ไม่ได้กำหนด: ชื่อ” จากนั้นจึงแสดงไฟล์และบรรทัดที่เกิดเหตุการณ์ทั้งหมดนี้ให้เราดู:

ใน Z:\home\localhost\www\blog2\second-page.php ออนไลน์ 10

นั่นคือในไฟล์ Second-page.phpบน บรรทัดที่ 10- ในกรณีนี้ PHP ทำถูกต้อง แต่บ่อยครั้งที่ข้อผิดพลาดนั้นสูงกว่าหนึ่งบรรทัดขึ้นไป เช่น เมื่อเราลืมใส่เครื่องหมายอัฒภาคที่ส่วนท้ายของคำสั่งถัดไป:

$name="เซอร์เกย์"; $_blog1="ไซต์บน!" //อุ๊ย ลืม :(
echo $name, " - ผู้เขียนบล็อก", $_blog1; -

ผลลัพธ์:

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

PHP บอกเราว่าข้อผิดพลาดอยู่ที่บรรทัดที่ 8 แต่จริงๆ แล้วฉันลืมใส่เครื่องหมายอัฒภาค 2 บรรทัดด้านบน:

ฉันดึงความสนใจของคุณไปที่ความจริงที่ว่าเมื่อคุณเห็น "ข้อผิดพลาดทางไวยากรณ์ ไม่คาดคิด"จากนั้นในกรณี 99% หมายความว่าคุณลืมใส่อัฒภาค

สิ่งต่อไปที่คุณต้องจำไว้คือคุณต้องแก้ไข (แก้ไข) ข้อผิดพลาดจากบนลงล่าง! เนื่องจากข้อผิดพลาดครั้งหนึ่งมักจะนำไปสู่ข้อผิดพลาดอีกนับสิบ ดังนั้น เมื่อแก้ไขข้อผิดพลาดแรกแล้ว จึงมีโอกาสค่อนข้างสูงที่ข้อผิดพลาดอื่นๆ ทั้งหมดจะหายไปโดยอัตโนมัติ

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

» ไวยากรณ์ภาษา PHP

การนำทางผ่านบทช่วยสอน: 1.1 เกี่ยวกับ PHP 1.2 ประวัติของ PHP 1.3 ทำไมต้อง PHP? 15 การแปลงเป็นอาร์เรย์ 8.16 บทสรุปในบทที่ 8 9.1 สตริง 9.2 การจัดการตัวแปรภายในสตริง 9.3 สตริงเอาต์พุต 9.4 เอาต์พุตที่จัดรูปแบบแล้วของสตริง 9.5 ความยาวของสตริงใน PHP 9.6 การค้นหาสตริงย่อยในสตริง 9.7 การล้างสตริง 9.8 บทสรุปของบทที่ 9 10.1 การทำงานกับ แบบฟอร์ม HTML 10.2 การส่งผ่านข้อมูลแบบฟอร์ม HTML วิธี GET และ POST 10.3 การรับข้อมูลใน PHP 10.4 อาร์เรย์ Superglobal $_GET และ $_POST 10.5 สรุปบทที่ 10 11.1 การเปิดไฟล์ใน PHP 11.2 การปิดไฟล์ใน PHP 11.3 การอ่านและการเขียนไฟล์ใน PHP 11.4 การคัดลอก การลบ และเปลี่ยนชื่อไฟล์ใน PHP 11.5 การรับ ข้อมูลไฟล์ใน PHP 11.6 ดัชนีไฟล์ใน PHP 11.7 การเปิดและปิดไดเร็กทอรีใน PHP 11.8 การอ่านไดเร็กทอรีใน PHP 11.9 การสร้างและการลบไดเร็กทอรีใน PHP 11.10 สรุปบทที่ 11 12.1 การทำงานกับฐานข้อมูล MySQL ใน PHP 12.2 การเชื่อมต่อ PHP กับเซิร์ฟเวอร์ฐานข้อมูล MySQL 12.3 การสร้าง และการลบฐานข้อมูล MySQL 12.4 การสร้างและการลบตาราง MySQL 12.5 การทำงานกับข้อมูล MySQL 12.6 บทสรุปของบทที่ 12 13.1 การทำงานกับรูปภาพใน PHP GD Library 13.2 การสร้างและแสดงรูปภาพใน PHP 13.3 การแก้ไขรูปภาพใน PHP 13.4 การทำงานกับข้อความใน PHP 13.5 สรุปบทที่ 13 14.1 การทำงานกับวันที่และเวลาใน PHP 14.2 สัญลักษณ์การจัดรูปแบบวันที่และเวลาใน PHP 14.3 ฟังก์ชัน Date() และ getdate() ใน PHP 14.4 การแปลงเป็นเวลาสัมบูรณ์ใน PHP 14.5 สรุปบทที่ 14 15.1 การทำงานกับนิพจน์ทั่วไปใน PHP 15.2 POSIX นิพจน์ทั่วไปใน PHP 15.3 MetaCharacters ใน PHP 15.4 คลาสอักขระ 15.5 ปริมาณ 15.6 การทดแทนรูปแบบ 15.7 ตัวอย่างนิพจน์ทั่วไป 15.8 สรุปบทที่ 15 16.1 การทำงานกับคุกกี้ใน PHP 16.2 การสร้างคุกกี้ใน PHP 16.3 การอ่านจากคุกกี้ 16.4 การลบคุกกี้ 16.5 บทสรุปของบทที่ 16

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

ตามที่กล่าวไว้ในบทที่ 1 สคริปต์ PHP เป็นข้อความที่ง่ายที่สุด และนั่นคือเหตุผลว่าทำไมเมื่อคุณสร้างมันขึ้นมา คุณสามารถใช้โปรแกรมแก้ไขข้อความธรรมดาได้ (เช่น Windows Notepad) เราจะไม่เลื่อนเรื่องนี้ออกไปนานเกินไปและจะเริ่มเขียนโปรแกรม ตามประเพณีผลงานจะเป็นข้อความ "Hello, World!" ในหน้าต่างเบราว์เซอร์ของคุณ คุณต้องเปิดตัวแก้ไขข้อความ ป้อนบรรทัดจากรายการ 3.1 ที่นั่น และบันทึกไฟล์นี้ด้วยนามสกุล .php (เช่น hello.php) วางไฟล์ไว้ในไดเรกทอรีรากของเว็บเซิร์ฟเวอร์ของคุณ (ในกรณีของเราคือ C:\Home_server\Apache2\htdocs\) และป้อน http://localhost/hello.php ในบรรทัดเบราว์เซอร์ ก่อนที่จะกดปุ่ม Enter ตรวจสอบให้แน่ใจว่าได้โหลดกระบวนการ Apache อีกครั้ง ซึ่งได้รับการยืนยันโดยไอคอน Apache Server Monitor ซึ่งยูทิลิตี้อยู่ที่มุมด้านล่างทางด้านขวาของจอภาพ

รายการ 3.1. โปรแกรมนี้จะแสดงข้อความ

‹?php
สะท้อน "สวัสดีชาวโลก!";
?›

ผลลัพธ์ของโปรแกรมดังรูป

ตอนนี้เรามาดูรายละเอียดของโปรแกรมนี้กันดีกว่า คุณต้องใส่ใจกับโครงสร้าง ‹?php ... ?› ซึ่งคล้ายกับแท็ก HTML มาก ใช้ในการแยกโค้ด PHP คำว่า echo ใช้ในการพิมพ์สตริง โดยจะอยู่ในเครื่องหมายคำพูดหลังจากนั้น (เราจะดูคำสั่งนี้ในภายหลัง) อัฒภาค (;) ทำสิ่งเดียวกับมหัพภาคท้ายประโยค

คุณต้องเลือกจากเมนูเบราว์เซอร์ (ในกรณีของเราคือ Internet Explorer) ดูย่อหน้า เป็น HTML- และเนื้อหาจะถูกเปิดเผยให้คุณเห็นทุกอย่างที่อยู่ในเพจด้วยโปรแกรมแก้ไขข้อความ โปรดทราบว่าเว็บเซิร์ฟเวอร์ส่งเฉพาะบรรทัด "Hello, World!" ไปยังเบราว์เซอร์ และนี่คือจุดเด่นหลักของการเขียนโปรแกรมเซิร์ฟเวอร์ เพราะเมื่อมีการเรียกไฟล์ HTML ไฟล์เหล่านั้นจะถูกส่งไปโดยไม่มีการเปลี่ยนแปลง ในกรณีนี้ โค้ด PHP จะถูกดำเนินการก่อน จากนั้นผลลัพธ์จะถูกส่งไปยังเบราว์เซอร์

อีกสิ่งหนึ่งที่เกี่ยวกับ ไวยากรณ์ภาษา PHPคุณไม่ควรลืมว่าถ้าโค้ดไม่ได้อยู่ในชุดแท็กพิเศษ ‹?php...?› โค้ดจะถูกส่งโดยไม่ต้องประมวลผล PHP (ดูรูปและรายการด้านล่าง)

รายการ 3.2. โปรแกรมที่ไม่ใช้แท็ก PHP

‹html›
<ศีรษะ>
‹title›ข้อความนอกแท็ก PHP‹/title›

<ร่างกาย>
echo "นี่ไม่ใช่โค้ด PHP";
‹br›
‹?php
สะท้อน "สวัสดีชาวโลก!";
?›
‹br›
echo "นี่ไม่ใช่โค้ด PHP";

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

กลับไปดูโครงสร้างที่เฟรมโค้ด PHP กัน นอกจากแท็กที่รู้จักกันดี ‹?php...?› ยังมีอีกสามประเภท:

  • ‹?...?›
  • ‹%...%›
  • ‹ภาษาสคริปต์ = "php"›...‹/script›

เมื่อคุณเลือกการออกแบบประเภทใดประเภทหนึ่ง คุณต้องแน่ใจว่าการตั้งค่า PHP อนุญาตให้คุณใช้งานได้ ตัวอย่างเช่น แท็กขนาดเล็ก ‹?...?› จะไม่เปิดใช้งานตามค่าเริ่มต้นเสมอไป (ดูค่าของพารามิเตอร์ short_ open_tag และไฟล์การกำหนดค่า php.ini) ซึ่งเป็นเหตุผลว่าทำไมจึงไม่แนะนำให้ใช้ โครงสร้าง ‹script language="php"›...‹/script› ก็เหมือนกับ ‹?php...?› มีให้บริการเสมอ แต่เนื่องจากลักษณะที่ยุ่งยาก จึงไม่ค่อยได้ใช้ แท็ก ‹%...%› ถูกใช้ใน PHP เวอร์ชัน 4.0.3 การดำเนินการขึ้นอยู่กับพารามิเตอร์ asp_tags ในบทช่วยสอนของเรา เรามักจะติดแท็กในรูปแบบ ‹?php...?›

ฉันควรจะพูดอีกสักสองสามคำเกี่ยวกับแท็กหรือไม่>. ใน PHP ยอมรับเป็นเครื่องหมายอัฒภาค (;) ซึ่งเป็นเหตุผลว่าทำไมคุณจึงไม่จำเป็นต้องเขียนไว้ที่ท้ายบรรทัดสุดท้าย

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

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

ฟังก์ชัน function_name (พารามิเตอร์) ( เนื้อหาของฟังก์ชัน )

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

ฟังก์ชั่น mytime($h, $g) ( $t = pow(2*$h/$g, 0.5); echo "เวลาที่ตกลงมาจากที่สูง ".$h." ที่ g = ".$g. " คือ ".$t." วินาที";

ตอนนี้เรามาดูโค้ดด้านบนกัน ขั้นแรกเราสร้างฟังก์ชันใหม่ เวลาของฉัน- ในการดำเนินการนี้ ให้เขียนฟังก์ชันคำพิเศษ หลังจากนั้นให้ระบุชื่อของฟังก์ชันที่จะสร้าง นอกจากนี้ในวงเล็บซึ่งคั่นด้วยเครื่องหมายจุลภาคอย่าลืมระบุพารามิเตอร์สำหรับฟังก์ชัน PHP ที่กำลังสร้าง หากไม่มีพารามิเตอร์ดังกล่าว คุณสามารถละเว้นและปล่อยให้วงเล็บว่างไว้ได้ จากนั้น เปิดเครื่องหมายปีกกาบนบรรทัดใหม่และเขียนเนื้อหาของฟังก์ชันลงไป ในกรณีของเรา นี่คือสูตรในการคำนวณเวลาตกอิสระ ในการทำเช่นนี้เราสร้างตัวแปร $t และเราจะกำหนดสูตรสำหรับคำนวณเวลาในการตกอย่างอิสระตามค่าของมัน

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

อย่างที่คุณเห็น ฟังก์ชั่นต่างๆ มีความสำคัญในทางปฏิบัติอย่างมากใน . ด้วยความช่วยเหลือเหล่านี้ คุณสามารถขยายฟังก์ชันการทำงานสำเร็จรูปของไซต์ได้อย่างยืดหยุ่น เป็นตัวอย่าง ให้พิจารณาการสร้าง . หากคุณอ่านบทความนี้ คุณอาจสังเกตเห็นว่ามีการใช้งานการนำทางเพจโดยใช้ฟังก์ชัน PHP พิเศษที่ถูกเรียกในตำแหน่งที่ถูกต้องในเทมเพลต WordPress

ตอนนี้เรามาดูตัวเลือกอื่นสำหรับการใช้ฟังก์ชันโดยใช้ลิงก์เป็นตัวอย่าง เพื่อความชัดเจน ลองดูฟังก์ชันสองตัวอย่าง - แบบมีและไม่มีพารามิเตอร์

ฟังก์ชั่น PHP มีและไม่มีพารามิเตอร์

ในตัวอย่างก่อนหน้าเกี่ยวกับ Free Fall Time เราดูฟังก์ชันที่มีพารามิเตอร์ ในกรณีของเรา ตัวแปรเหล่านี้คือ $h และ $g ใน PHP คุณสามารถใช้ฟังก์ชันที่ไม่มีพารามิเตอร์ได้ ในกรณีนี้ ไม่มีสิ่งใดถูกเขียนในวงเล็บหลังชื่อฟังก์ชัน ตัวอย่างของฟังก์ชันดังกล่าวจะเป็นฟังก์ชันที่แสดงโซลูชันสำเร็จรูปบางอย่าง เช่น ลิงก์หรือข้อความ

ฟังก์ชั่น mylink() ( echo "

ในตัวอย่างข้างต้น เราสร้างฟังก์ชันแบบไม่มีพารามิเตอร์ที่เรียกว่า mylink ต่อไป ในเนื้อความของฟังก์ชัน เราระบุว่าเราต้องแสดงลิงก์ปกติ ตอนนี้ เมื่อคุณเรียกใช้ฟังก์ชันนี้ที่ใดก็ได้ในเอกสาร ข้อความหรือลิงก์ที่เขียนในส่วนเนื้อหาของฟังก์ชัน mylink จะปรากฏขึ้น

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

ฟังก์ชั่น mylink ($link, $target, $title, $anchor) ( echo "$anchor"; ) $mylink = "https://archive.site"; $mytarget = "_blank"; $mytitle = "การสร้างและโปรโมทเว็บไซต์"; $myanchor = "Создание и продвижение сайтов"; mylink($mylink, $mytarget, $mytitle, $myanchor);!}

หลังจากได้รับค่าของตัวแปรแล้วเราก็เรียกใช้ฟังก์ชัน มายลิงค์และส่งพารามิเตอร์ไปให้มัน ในกรณีของเรา นี่คือตัวแปรที่เราสร้างไว้ก่อนหน้านี้ ดังที่คุณอาจเดาได้แล้วว่าค่าของตัวแปร $mylink จะถูกส่งผ่านไปยังตัวแปร $link, $mytarget ไปยัง $target เป็นต้น ด้วยเหตุนี้ฟังก์ชัน mylink จะยอมรับพารามิเตอร์ที่เราต้องการและแสดงผลลัพธ์ที่เกี่ยวข้องบนหน้าจอในรูปแบบของลิงก์

ฉันหวังว่าคุณจะเข้าใจสาระสำคัญของฟังก์ชัน PHP ถ้าไม่เช่นนั้น ฉันขอแนะนำให้อ่านบทความอีกครั้งและศึกษาตัวอย่างต่างๆ เนื้อหาไม่ซับซ้อน แต่สำคัญมาก ดังนั้นหากคุณตัดสินใจเรียน PHP อย่างจริงจัง ฉันขอแนะนำให้ศึกษาเนื้อหาทั้งหมดอย่างรอบคอบ

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

นั่นคือทั้งหมดที่ ขอให้โชคดีและประสบความสำเร็จในการเรียนรู้พื้นฐานของ PHP

ช่วยให้คุณจัดระเบียบการดำเนินการของส่วนย่อยของโค้ดตามเงื่อนไข

ไวยากรณ์:

ถ้า (การแสดงออก) คำสั่ง

สามารถมีการซ้อนระดับไม่จำกัดภายใน IF อื่นๆ

ถ้า($a > $b) พิมพ์ "$a มากกว่า $b";$b) ( echo "$a มากกว่า $b"; $b=$a; ) ?>

อื่น

ขยายความสามารถของ IF ในการจัดการตัวแปรของนิพจน์เมื่อเป็น FALSE

นิพจน์ ELSE จะถูกดำเนินการก็ต่อเมื่อ IF เป็น FALSE

If($a>$b) ( echo "a มากกว่า b"; ) else ( echo "a ไม่เกิน b"; )

อย่างอื่น

เป็นการรวมกันของ IF และ ELSE อนุญาตให้คุณดำเนินการนิพจน์หากค่า IF เป็น FALSE แต่ไม่เหมือนกับ ELSE ตรงที่จะดำเนินการหากนิพจน์ ELSEIF เป็นจริง

ถ้า ($a > $b) ( echo "a มากกว่า b"; ) elseif ($a == $b) ( echo "a เท่ากับ b"; ) else ( echo "a น้อยกว่า b"; )

ถ้า...สิ้นสุด

หนึ่งในตัวเลือกที่เป็นไปได้สำหรับการจัดกลุ่มตัวดำเนินการกับตัวดำเนินการ IF

มีประโยชน์เมื่อฝังโค้ด HTML ขนาดใหญ่ภายในคำสั่ง IF

ถ้า ($a == 1): echo "a คือ 1"; elseif ($a == 2): echo "a คือ 2"; อื่น: echo "และไม่เท่ากับ 1 และ 2"; สิ้นสุด;ก=5

บล็อกโค้ด HTML A=5 จะมองเห็นได้หากตรงตามเงื่อนไข $a==5

ในขณะที่

ประเภทลูปที่ง่ายที่สุดใน PHP บังคับให้ PHP ดำเนินการคำสั่งที่ซ้อนกันตราบใดที่เงื่อนไขเป็น TRUE หากเงื่อนไขเป็น FALSE ตั้งแต่เริ่มต้น การวนซ้ำจะไม่ถูกดำเนินการแม้แต่ครั้งเดียว

ไวยากรณ์:

WHILE(เงื่อนไข) สำนวน

คุณสามารถจัดกลุ่มคำสั่งหลายรายการไว้ในวงเล็บปีกกา หรือใช้ไวยากรณ์ทางเลือก: WHILE(condition)expressions... ENDWHILE;

สองตัวอย่างนี้พิมพ์หมายเลข 1 ถึง 5

ทำ_ในขณะที่

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

1); ?>

คุณสามารถหยุดใช้บล็อกคำสั่งที่อยู่ตรงกลางได้โดยการแนะนำคำสั่ง BREAK ลงในลูป DO..WHILE(0)

สำหรับ

ลูปที่ทรงพลังที่สุดใน PHP

ไวยากรณ์:

นิพจน์ FOR (เงื่อนไข1; เงื่อนไข2; เงื่อนไข3)

  • เงื่อนไข 1 - ดำเนินการโดยไม่มีเงื่อนไข (คำนวณ) ที่จุดเริ่มต้นของลูป

(เงื่อนไข 2 - ตรวจสอบที่จุดเริ่มต้นของการวนซ้ำแต่ละครั้ง หากเป็นจริง การวนซ้ำจะดำเนินต่อไปและคำสั่งที่ซ้อนกันจะถูกดำเนินการ หากเป็น FALSE การวนซ้ำจะสิ้นสุด (เงื่อนไข 3 - ดำเนินการ (คำนวณแล้ว) เมื่อสิ้นสุดการวนซ้ำแต่ละครั้ง

แต่ละเงื่อนไขเหล่านี้สามารถเว้นว่างได้

ตัวอย่างที่ 1:

สำหรับ ($a = 1; $a

ตัวอย่างที่ 2:

สำหรับ ($a = 1;;$a++) ( if ($a > 5) ( break; ) echo $a; )

ตัวอย่างที่ 3:

$a = 1; สำหรับ (;;) ( if ($a > 5) ( break; ) พิมพ์ $a; $a++; )

ตัวอย่างที่ 4:

สำหรับ ($a = 1; $a

PHP รองรับทางเลือกอื่นสำหรับไวยากรณ์:

สำหรับ(เงื่อนไข1; เงื่อนไข2; เงื่อนไข3;): ตัวดำเนินการ;...;ENDFOR;

หยุดพัก

ยกเลิกการวนซ้ำปัจจุบัน

ตัวอย่าง:

$a = 0; ในขณะที่ ($a

ดำเนินการต่อ

เลื่อนไปยังจุดเริ่มต้นของรอบถัดไป

สวิตช์

เปรียบเทียบตัวแปรหรือนิพจน์ที่มีค่าต่างกันและรันโค้ดส่วนต่างๆ ขึ้นอยู่กับว่าค่าของนิพจน์นั้นคืออะไร

  • ค่าเริ่มต้น - จับคู่ค่าทั้งหมดที่ไม่ตรงกับกรณีอื่น CASE - สามารถเป็นประเภทสเกลาร์ใดก็ได้ เช่น จำนวนเต็มหรือตัวเลขทศนิยมและสตริง

จำเป็นต้อง

แทนที่ตัวเองด้วยเนื้อหาของไฟล์ที่ระบุ

ตัวอย่าง:

ต้องการ("include.inc");

แต่คุณไม่สามารถใส่ไว้ในลูปและคาดหวังให้รวมเนื้อหาของไฟล์อื่นหลายครั้งในระหว่างการวนซ้ำแต่ละครั้ง มีรวมสำหรับสิ่งนี้

รวม

แทรกและดำเนินการเนื้อหาของไฟล์ที่ระบุ

เพราะ รวม()นี่เป็นตัวดำเนินการพิเศษและต้องอยู่ในวงเล็บปีกกาเมื่อใช้ภายในคำสั่งแบบมีเงื่อนไข

การทำงาน

ประกาศฟังก์ชั่น

ภายในฟังก์ชันอาจมีโค้ด PHP ที่ถูกต้อง แม้แต่การประกาศฟังก์ชันหรือคลาสอื่นก็ตาม ต้องประกาศฟังก์ชันก่อนจึงจะสามารถอ้างอิงได้

ผลลัพธ์ที่ส่งคืน:

  • ผลลัพธ์จะถูกส่งกลับผ่านคำสั่ง return ที่เป็นทางเลือก
  • ผลลัพธ์ที่ส่งคืนอาจเป็นประเภทใดก็ได้ รวมถึงรายการและออบเจ็กต์

ผลลัพธ์หลายรายการไม่สามารถส่งคืนได้ แต่คุณสามารถใช้สิ่งนี้ได้โดยการส่งคืนรายการ:

ฟังก์ชั่น foo() ( return array (0, 1, 2); ) list ($zero, $one, $two) = foo();

ข้อโต้แย้ง:

ข้อมูลสามารถส่งผ่านไปยังฟังก์ชันผ่านรายการอาร์กิวเมนต์ ซึ่งเป็นรายการตัวแปรและ/หรือค่าคงที่ที่คั่นด้วยเครื่องหมายจุลภาค

ไม่รองรับรายการอาร์กิวเมนต์ความยาวผันแปรได้ แต่สามารถทำได้โดยการส่งผ่านอาร์เรย์

ฟังก์ชั่น Takes_array($input) ( echo "$input + $input = ", $input+$input; )

ตามค่าเริ่มต้น อาร์กิวเมนต์ของฟังก์ชันจะถูกส่งผ่านตามค่า หากต้องการเปลี่ยนอาร์กิวเมนต์ในฟังก์ชัน จะต้องส่งผ่านโดยการอ้างอิง ในการดำเนินการนี้ คุณจะต้องใส่เครื่องหมายและ (&) ก่อนชื่ออาร์กิวเมนต์ในการประกาศฟังก์ชัน:

ฟังก์ชั่น foo(&$bar) ( $bar .= "และสตริงเพิ่มเติม"; ) $str = "นี่คือสตริง, "; ฟู($str); เสียงสะท้อน $str; // จะพิมพ์: "นี่คือสตริงและสตริงเพิ่มเติม"

function foo($bar) ( $bar .= "และสตริงเพิ่มเติม"; ) $str = "นี่คือสตริง, "; ฟู($str); เสียงสะท้อน $str; //จะส่งออก: "นี่คือสตริง" foo(&$str); เสียงสะท้อน $str; //จะส่งออก: "นี่คือบรรทัดและบรรทัดเพิ่มเติม"

ค่าเริ่มต้น:

ค่าเริ่มต้นต้องเป็นค่าคงที่ ไม่ใช่ตัวแปรหรือสมาชิกของคลาส

วันทำงาน ($type = "วันจันทร์") ( echo "วันนี้เป็น $type"; ) echo day(); //จะส่งออก: วันนี้เป็นวันจันทร์ echo day("วันอังคาร"); //จะส่งออก: วันนี้เป็นวันอังคาร

เมื่อประกาศ อาร์กิวเมนต์เริ่มต้นจะต้องปรากฏทางด้านขวาของอาร์กิวเมนต์อื่นๆ

ฟังก์ชั่น วัน($day_num, $type = "วันจันทร์") ( return "วันนี้คือ $day_num - $type"; )

old_function

คุณสมบัตินี้มีวัตถุประสงค์เพื่อความเข้ากันได้เท่านั้น และควรใช้โดยตัวแปลง PHP/FI2 -> PHP3 เท่านั้น ฟังก์ชั่นที่อธิบายในลักษณะนี้ไม่สามารถเรียกจากรหัสบริการ PHP ได้ คุณสามารถหลีกเลี่ยงปัญหานี้ได้ด้วยการแนะนำฟังก์ชันพิเศษในรูปแบบ PHP3 ที่จะเรียกว่า OLD_FUNCTION

ระดับ

ชุดของตัวแปรและฟังก์ชันที่ทำงานร่วมกับตัวแปรเหล่านี้

รายการ[$artnr] += $num;

) // ลบรายการ $num $artnr ออกจากฟังก์ชันรถเข็น Remove_item ($artnr, $num) ( if ($this->items[$artnr] > $num) ( $this->items[$artnr] -= $ num ; กลับจริง; ) อื่น ๆ ( กลับเท็จ; ) ) ?> ใหม่:

คลาสคือประเภท นั่นคือ เทมเพลตสำหรับตัวแปรจริง คุณต้องสร้างตัวแปรประเภทที่ต้องการโดยใช้ตัวดำเนินการ

$cart = รถเข็นใหม่; $cart->add_item("10", 1);

คลาสสามารถเป็นส่วนขยายของคลาสอื่นได้ คลาสขยายมีตัวแปรและฟังก์ชันทั้งหมดของคลาสพื้นฐานและสิ่งที่คุณกำหนดเมื่อขยายคลาส ทำได้โดยใช้คีย์เวิร์ดขยาย:

คลาส Named_Cart ขยาย Cart ( var $owner; function set_owner ($name) ( $this->owner = $name; ) ) สิ่งนี้จะกำหนดคลาส Named_Cart ที่มีตัวแปรและฟังก์ชันทั้งหมดของคลาส Cart พร้อมด้วยตัวแปรเพิ่มเติม$เจ้าของ

และฟังก์ชันเพิ่มเติม set_owner() คุณสามารถสร้างบัคเก็ตที่มีชื่อได้ตามปกติและตั้งค่าหรือรับเจ้าของบัคเก็ต คุณยังสามารถใช้ฟังก์ชันรถเข็นปกติในรถเข็นที่ระบุชื่อได้:



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