PHP: ตัวดำเนินการทางคณิตศาสตร์ รูปแบบคำนำหน้าของการเพิ่มขึ้น

การดำเนินการกับตัวแปร PHP (ตัวดำเนินการ)

มีกลุ่มต่างๆให้นำไปปฏิบัติ

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

การดำเนินการทางคณิตศาสตร์ใน PHP

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

ตัวดำเนินการหาร ("/") จะส่งกลับประเภทจริงเสมอ แม้ว่าทั้งสองค่าจะเป็นจำนวนเต็ม (หรือสตริงที่แปลงเป็นจำนวนเต็ม) มิฉะนั้นผลลัพธ์จะเป็นเศษส่วน

การดำเนินการคำนวณเศษที่เหลือ” % " ใช้ได้กับจำนวนเต็มเท่านั้น ดังนั้นการใช้กับเศษส่วนอาจให้ผลลัพธ์ที่ไม่พึงประสงค์

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

การดำเนินการเพิ่มและลด

PHP เช่นเดียวกับ C รองรับการเพิ่มและลดส่วนนำหน้าและ postfix

ตัวดำเนินการเพิ่มและลด Postfix

เช่นเดียวกับในภาษา C ตัวดำเนินการเหล่านี้จะเพิ่มหรือลดค่าของตัวแปร และในนิพจน์จะส่งกลับค่าของตัวแปร $กก่อนการเปลี่ยนแปลง ตัวอย่างเช่น:

$a=10;
$ข=$a++;
เสียงก้อง "a=$a, b=$b"; // พิมพ์ a=11, b=10

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

ตัวดำเนินการเพิ่มและลดคำนำหน้า

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

$a=10;
$ข=--$ก;
เสียงก้อง "a=$a, b=$b"; // พิมพ์ a=9, b=9

การดำเนินการเพิ่มและลดค่าถูกนำมาใช้บ่อยมากในทางปฏิบัติ เช่น เกิดขึ้นในเกือบทุกรอบ สำหรับ .

เสียงสะท้อน "

การเพิ่มขึ้นภายหลัง

" ;
$a = 5 ;
echo "ต้องเป็น 5: " . $a++ . -
\n" ;

\n" ;

เอคโค่ "

เพิ่มคำนำหน้า

" ;
$a = 5 ;
echo "ต้องเป็น 6: " . ++ $ก. -
\n" ;
echo "ต้องเป็น 6: " . $ก. -
\n" ;

เอคโค่ "

การลดลงภายหลัง

" ;
$a = 5 ;
echo "ต้องเป็น 5: " . $เอ-- . -
\n" ;

\n" ;

เอคโค่ "

คำนำหน้าลดลง

" ;
$a = 5 ;
echo "ต้องเป็น 4: " . -- $ก. -
\n" ;
echo "ต้องเป็น 4: " . $ก. -
\n" ;
?>

การดำเนินการสตริง

PHP มีโอเปอเรเตอร์สองตัวสำหรับการทำงานกับสตริง ตัวแรกคือตัวดำเนินการต่อข้อมูล (".") ซึ่งส่งคืนการต่อข้อมูลของอาร์กิวเมนต์ด้านซ้ายและขวา ประการที่สองคือตัวดำเนินการมอบหมายที่มีการต่อข้อมูลซึ่งต่อท้ายอาร์กิวเมนต์ที่ถูกต้องทางด้านซ้าย เรามายกตัวอย่างเฉพาะ:

$a = "สวัสดี" ;
$ข = $a "โลก!" - // $b มีสตริง "Hello World!"

$a = "สวัสดี" ;
$a .= "โลก!" - // $a มีสตริง "Hello World!"
?>

การดำเนินการระดับบิต

การดำเนินการเหล่านี้ได้รับการออกแบบเพื่อดำเนินการ (ตั้งค่า/ยกเลิกการตั้งค่า/ตรวจสอบ) กลุ่มของบิตในตัวแปรทั้งหมด บิตของจำนวนเต็มนั้นไม่มีอะไรมากไปกว่าตัวเลขแต่ละตัวที่มีจำนวนเดียวกันซึ่งเขียนในระบบเลขฐานสอง ตัวอย่างเช่น ในไบนารี่ ตัวเลข 12 จะมีลักษณะเป็น 1100 และ 2 จะมีลักษณะเป็น 10 ดังนั้นนิพจน์ 12|2 จะส่งคืนหมายเลข 14 ให้เรา (1110 ในรูปแบบไบนารี) หากตัวแปรไม่ใช่จำนวนเต็ม แสดงว่าตัวแปรนั้นไม่ใช่จำนวนเต็ม
ปัดเศษครั้งแรก จากนั้นจึงใช้ตัวดำเนินการต่อไปนี้

ในการแทนตัวเลขหนึ่งตัว จะใช้ 32 บิต:

  • 0000 0000 0000 0000 0000 0000 0000 0000 เป็นศูนย์;
  • 0000 0000 0000 0000 0000 0000 0000 0001 คือ 1;
  • 0000 0000 0000 0000 0000 0000 0000 0010 คือ 2;
  • 0000 0000 0000 0000 0000 0000 0000 0011 คือ 3;
  • 0000 0000 0000 0000 0000 0000 0000 0100 คือ 4;
  • 0000 0000 0000 0000 0000 0000 0000 0101 คือ 5;
  • 0000 0000 0000 0000 0000 0000 0000 1111 คือ 15;

ตัวดำเนินการ Bitwise:

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

การดำเนินการเปรียบเทียบ

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

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

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

ดูการเปรียบเทียบอาร์เรย์สำหรับรายละเอียด

ตัวดำเนินการเปรียบเทียบ:

ตัวอย่าง ชื่อ ผลลัพธ์
$a == $ข เท่ากับ จริงถ้า $a เท่ากับ $b
$a === $b เท่าเทียมกัน จริงถ้า $a เท่ากับ $b และมีประเภทเดียวกัน (เพิ่มใน PHP 4)
$a != $b ไม่เท่ากัน จริงถ้า $a ไม่เท่ากับ $b
$ก<>$ข ไม่เท่ากัน จริงถ้า $a ไม่เท่ากับ $b
$a !== $b เหมือนกันไม่เท่ากัน จริงถ้า $a ไม่เท่ากับ $b หรือเป็นประเภทที่แตกต่างกัน (เพิ่มใน PHP 4)
$ก< $b น้อย จริงถ้า $a น้อยกว่า $b อย่างเคร่งครัด
$a > $b มากกว่า จริงถ้า $a มากกว่า $b อย่างเคร่งครัด
$ก<= $b น้อยกว่าหรือเท่ากับ จริงถ้า $a น้อยกว่าหรือเท่ากับ $b
$a >= $b มากกว่าหรือเท่ากับ จริงถ้า $a มากกว่าหรือเท่ากับ $b

การดำเนินการเชิงตรรกะ

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

นี่คือตารางตัวดำเนินการเชิงตรรกะ PHP:

ควรสังเกตว่าการประเมินนิพจน์เชิงตรรกะที่มีตัวดำเนินการดังกล่าวจะดำเนินการจากซ้ายไปขวาเสมอ และหากผลลัพธ์ชัดเจนอยู่แล้ว (เช่น เท็จ&&บางสิ่งบางอย่างให้เสมอ เท็จ) จากนั้นการคำนวณจะสิ้นสุดลง แม้ว่านิพจน์จะมีการเรียกใช้ฟังก์ชันก็ตาม ตัวอย่างเช่น ในตัวดำเนินการ $logic = 0&&(time()>100); ฟังก์ชั่นมาตรฐาน เวลา()จะไม่มีวันถูกเรียก

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

ตัวดำเนินการเพิ่มขึ้น (++) และลดลง (--) ไม่สามารถใช้ได้กับตัวแปรบูลีน

ตัวดำเนินการสมมูล

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

$a=10;
$b="10";

และนี่ถึงแม้จะมีตัวแปรก็ตาม $กหมายถึงตัวเลขและ $ข- เส้น. ตอนนี้เรามาดูตัวอย่างที่แตกต่างออกไปเล็กน้อย:

$a=0; // ศูนย์
$ข = ""; //สตริงว่าง
if($a==$b) echo "a และ b เท่ากัน"; // พิมพ์ "a และ b เท่ากัน"

แม้ว่า $กและ $ขไม่เท่ากันอย่างชัดเจนแม้ในความหมายปกติของคำสคริปต์จะประกาศว่าเหมือนกัน ทำไมสิ่งนี้ถึงเกิดขึ้น? ประเด็นก็คือ หากหนึ่งในตัวถูกดำเนินการของตัวดำเนินการเชิงตรรกะสามารถตีความได้ว่าเป็นตัวเลข ตัวถูกดำเนินการทั้งสองตัวจะถือเป็นตัวเลข ในกรณีนี้ บรรทัดว่างจะกลายเป็น 0 ซึ่งจะถูกเปรียบเทียบกับศูนย์ จึงไม่น่าแปลกใจที่ผู้ปฏิบัติงาน เสียงสะท้อนทำงาน
ปัญหาได้รับการแก้ไขโดยตัวดำเนินการสมมูล === (ความเท่าเทียมกันสามเท่า) ไม่เพียงแต่เปรียบเทียบสองสำนวนเท่านั้น แต่ยังเปรียบเทียบประเภทของสำนวนด้วย ลองเขียนตัวอย่างของเราใหม่โดยใช้โอเปอเรเตอร์นี้

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

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

ตัวดำเนินการลบ คูณ หาร โมดูโล และบวก

ตัวดำเนินการลบ การคูณ การหาร โมดูโล และการบวก จะใช้ในลักษณะเดียวกับในคณิตศาสตร์ ที่นี่ควรให้ความสนใจกับตัวดำเนินการแผนกและโมดูโล

ตัวดำเนินการหาร (" / ") ส่งคืนตัวเลขทศนิยม เว้นแต่ทั้งสองค่าจะเป็นจำนวนเต็ม (หรือสตริงที่แปลงเป็นจำนวนเต็ม) ซึ่งหารด้วยจำนวนเต็ม ซึ่งในกรณีนี้จะส่งกลับค่าจำนวนเต็ม

ผลลัพธ์2 = $ผลลัพธ์2
"; echo "result3 = $result3
result4 = $result4"; ?>

ในการหารแบบโมดูโล ตัวถูกดำเนินการจะถูกแปลงเป็นจำนวนเต็ม (โดยเอาส่วนที่เป็นเศษส่วนออก) ก่อนที่การดำเนินการจะเริ่มต้น ผลลัพธ์ของการดำเนินการหารส่วนที่เหลือ % จะมีเครื่องหมายเดียวกับเงินปันผล:

การปฏิเสธแบบเอกนารี

ตัวดำเนินการปฏิเสธเอกนารีจะแสดงด้วยเครื่องหมาย "-" และจะกลับความหมายของตัวถูกดำเนินการเพียงตัวเดียว:

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

เพิ่มขึ้น

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

รูปแบบคำนำหน้าของการเพิ่มขึ้น

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

รูปแบบการเพิ่มขึ้นภายหลัง

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

ลดลง

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

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

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

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

พบปะ-ช่วง.

จุด "." คุณรู้อยู่แล้วว่ามันเชื่อมสตริงเข้าด้วยกัน เครื่องหมายบวก "+" จะเพิ่มตัวเลข และจุดรวมเส้น
$a1="100";
$a2="200"
จะเกิดอะไรขึ้นถ้าคุณพับ $a1และ $a2- วิธีใส่แบบนี้...
$a1+$a2=300
$a1.$a2="100200"
...และไม่เคยลืมเรื่องนี้เลย

นี่เป็นอีกวิธีหนึ่งในการเขียนการบวก

สมมติว่าเรากำลังเขียนสตริงที่ซับซ้อนจากแฟรกเมนต์ต่างๆ เราสามารถผนวกข้อมูลใหม่ต่อท้ายตัวแปรของเราได้ดังนี้:

$this->string_about_letters = $this->string_about_letters."ตัวอักษรสองสามตัว..."; $this->string_about_letters = $this->string_about_letters" อีกสองสามตัวอักษร..."; $this->string_about_letters = $this->string_about_letters." และตัวอักษรอีกสองสามตัว..."; $this->string_about_letters = $this->string_about_letters" สองสามตัวอักษรอีกครั้ง...";
นานหน่อยไม่ใช่เหรอ? การทำซ้ำตัวแปรยาวจะขัดขวาง $นี่->string_about_letters- ดังนั้นเราจะเขียนแตกต่างออกไป:
$this->string_about_letters .= "ตัวอักษรหลายตัว..."; $this->string_about_letters .= "อีกสองสามตัวอักษร..."; $this->string_about_letters .= "และอีกสองสามตัวอักษร..."; $this->string_about_letters .= "มีตัวอักษรอีกสองสามตัวอีกครั้ง...";
สะดวกกว่าใช่ไหม?

เช่นเดียวกับการบวกทางคณิตศาสตร์:
$เอบีซี+=1;
เพิ่ม 1 เข้าไปในเนื้อหาของตัวแปร $เอบีซี.

คุณสามารถเพิ่มได้อย่างไร? โดยปกติแล้วตาม S-shno:

$เอบีซี++;หรือ +$เอบีซี;

สำนวนทั้งสองนี้มักใช้ในโครงสร้างแบบวน และไม่ใช่โดยตัวมันเอง แต่เป็นการแสดงออกที่ซับซ้อนกว่า
ความแตกต่างระหว่างสองนิพจน์นี้คือในกรณีแรก ค่าของตัวแปรจะถูกนำมาพิจารณาในนิพจน์ จากนั้นจึงบวกค่าหนึ่งเข้าไปด้วย และในกรณีที่สอง จะกลับกัน - ประการแรกค่าของตัวแปรคือ เพิ่มขึ้น จากนั้นจะใช้ค่าผลลัพธ์ในนิพจน์ ตัวอย่างจะทำให้ชัดเจน:
$a=1;
เสียงสะท้อน $a++;
เสียงก้อง +$a;
อันดับแรก เสียงสะท้อนจะพิมพ์ “1” ให้พวกเรา แล้วก็พิมพ์อันที่สองออกมาเหรอ..แต่นั่นไม่ถูกต้องนะ! ไม่ 2 มันจะพิมพ์ออกมาและ "3" ทำไม คิดออกเอง

วันนี้ฉันอยากจะแจกแจงโค้ดหนึ่งชิ้นที่เรามักจะใช้ในโปรแกรมของเรา และโดยทั่วไปในโปรแกรมใดก็ตามที่ดึงข้อมูลจากฐานข้อมูล SQL

แน่นอนว่าเรากำลังพูดถึงการรับข้อมูลผ่าน เลือก-ก.

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

เริ่มต้นด้วยตัวอย่าง สมมติว่าเราเลือกชื่อเรื่องของวิดีโอภาพยนตร์ที่ออกในปี 2000 จากฐานข้อมูลเทปวิดีโอ และต้องการพิมพ์ในรูปแบบตาราง (โดยต้องมี ID เทปคาสเซ็ต)

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

$this->sql_query="select * from film โดยที่ f_date ระหว่าง "2000-01-01 00:00:00" และ "2000-12-31 23:59:59 สั่งซื้อโดย f_id""; $นี่->sql_execute(); $str=" "; $row_count=mysql_num_rows($this->sql_res); for($i=0;$isql_res); $str=$str" \n"; ) $str=$str"
".$ฟิล์ม["f_id"]"".$ฟิล์ม["f_name"]"
";
ให้ฉันอธิบาย.

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

เราเริ่มต้นตัวแปรข้อความเพื่อป้อนโค้ด HTML เข้าไปโดยการเพิ่มส่วนแรกของข้อความ - จุดเริ่มต้นของตาราง

จากนั้นเราจะเปิดลูปโดยมีจำนวนการวนซ้ำเท่ากับจำนวนแถวที่ดึงมาจากแบบสอบถาม

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


    อาร์เรย์แบบเชื่อมโยงจะเหมือนกับอาร์เรย์ปกติ (มีตัวเลข) โดยจะใช้เฉพาะสตริงอักขระ แทนที่จะเป็นตัวเลข ที่ใช้เป็นชื่อเซลล์ และคุณควรเข้าถึงเซลล์ของอาร์เรย์ดังกล่าว: $abc["first"], $abc["mama"]...
ต่อไป เราจะเพิ่มแถวถัดไปของตารางให้กับตัวแปรข้อความของเรา โดยใช้ข้อมูลที่ได้รับจากฐานข้อมูล ในการเข้าถึงข้อมูล อย่างที่คุณเห็น จะมีการใช้ชื่อฟิลด์ของตาราง นี่คือคุณสมบัติของฟังก์ชัน mysql_fetch_array อย่างที่ฉันพูดไปแล้ว

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

แต่ทั้งหมดนี้มันไม่ยุ่งยากเกินไปเหรอ? ในความคิดของฉันเป็นเช่นนั้นมาก ฉันเสนอให้เขียนทั้งหมดนี้แตกต่างออกไป: ทุกอย่างเหมือนกัน แต่สั้นกว่า