ให้เรตสมาชิก: 3 / 5

ดาวใช้งานดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

 บทที่ 24 เขียนฟังก์ชั่น สลับค่าของตัวแปรสองตัว swap()

ถ้าเราต้องการสลับค่าระหว่างสองตัวแปร เราก็เขียนฟังก์ชัน swap() ขึ้นมา
 
ไฟล์ตัวอย่าง :: code_ex1.php
<?php
function swap(&$a, &$b) {
  $t = $a;
  $a = $b;
  $b = $t;
}
$x=10;
$y=3;
echo "x=",$x,",y=",$y," ";
swap($x,$y);
echo "x=",$x,",y=",$y," ";
?>

ตัวอย่างข้างบน ก็แสดงให้เห็นวิธีการใช้ call-by-reference อีกเช่นกัน

มีข้อสังเกตอยู่ว่า การใช้ call-by-reference ไม่จำเป็นต้องทำตอนนิยามฟังก์ชันเท่านั้น แต่อาจจะทำตอนผ่านตัวแปรเมื่อเรียกใช้งานจริง ตัวอย่างเช่น
 

ไฟล์ตัวอย่าง :: code_ex2.php
<?php
function swap($a, $b) {
$t = $a;
$a = $b;
$b = $t;
}
$x=10;
$y=3;
echo "x=",$x,",y=",$y," ";
swap($x, $y);
echo "x=",$x,",y=",$y," ";
?>

จากตัวอย่างนี้ เราแก้ไขฟังก์ชัน swap() ทำให้ไม่สนับสนุน call-by-reference ดังนั้นเพื่อจะใช้งานได้อย่างถูกต้อง  เราก็จะต้องใช้ reference ของตัวแปรเป็นอาร์กิวเมนต์ของฟังก์ชัน ในเวลาที่เรียกใช้ ซึ่งก็คือ swap(&$x,&$y)  ถ้าเราไม่ทำอย่างนี้ เช่น เขียนว่า swap($x,$y) ก็จะไม่มีการสลับค่าของตัวแปรทั้งสอง เนื่องจากว่า เมื่ออยู่ภายในฟังก์ชัน swap() แล้ว เราไม่สามารถเปลี่ยนแปลงค่าของตัวแปรเหล่านั้นได้ คืออ่านได้ แต่ไม่สามารถกำหนดค่าใหม่ได้

ชื่อ
บทที่ 24 การสลับค่าของตัวแปรสองตัว swap()
หมวดหมู่
PHP Basics, PHP Basics
ฮิต
11451
ผู้สร้างเอกสาร
thatsawan
วันที่สร้างเอกสาร
2014-05-13 19:18:48

chapter_24.zip

ประเภทไฟล์ zip

ขนาดไฟล์ 699 bytes

ผู้อัพโหลดไฟล์ thatsawan

วันที่อัพโหลด 2014-04-21 14:47:14




กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
Q - วิธีการส่งค่ากลับมาหน้าเดิมหลังจากมีการบันทึกการเปลี่ยนแปลงผล ด้วย phpbb
โดย Ittichai_chupol ศ 02 พ.ย. 2018 9:25 am บอร์ด Programming - PHP
2
103
ส 03 พ.ย. 2018 2:51 pm โดย Ittichai_chupol
งานประจำวันที่ 02 พฤศจิกายน 2561
โดย nice_13 ศ 02 พ.ย. 2018 8:57 am บอร์ด M071 - พิชญ์สินี คงจร
1
6
ศ 02 พ.ย. 2018 8:02 pm โดย nice_13
งานประจำวันที่ 2 พฤศจิกายน 2561
โดย tai14 ศ 02 พ.ย. 2018 8:56 am บอร์ด MT26 - นางสาวอัครยุภา ยงยุทธ
1
9
ศ 02 พ.ย. 2018 7:11 pm โดย tai14
B - กรอกข้อมูลเพื่อที่จะซื้อของโดยกรอกข้อมูลในหน้า Address เสร็จแล้วก็กด Next เพื่อที่จะไปหน้า Payment Method ไม่ได้
โดย Parichat ศ 02 พ.ย. 2018 12:33 am บอร์ด Joomla Dev
0
3
ศ 02 พ.ย. 2018 12:33 am โดย Parichat
VDO - รีวิว การใช้งาน product labels
โดย pprn พฤ 01 พ.ย. 2018 6:59 pm บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
0
1
พฤ 01 พ.ย. 2018 6:59 pm โดย pprn
ใครใช้วินโดว์ภาษาไทยระวังเจอปัญหานี้
โดย tai14 พฤ 01 พ.ย. 2018 6:58 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
154
พฤ 01 พ.ย. 2018 6:58 pm โดย tai14
R - mdsoft_bnp_quotation_print - ใบเสนอราคา
โดย thatsawan พฤ 01 พ.ย. 2018 6:37 pm บอร์ด บุญนำพา - Developer
0
4
พฤ 01 พ.ย. 2018 6:37 pm โดย thatsawan
VDO - รีวิว Module login (โมดูล ล็อกอิน) สำหรับ Login ร้านค้า
โดย pprn พฤ 01 พ.ย. 2018 6:13 pm บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
0
5
พฤ 01 พ.ย. 2018 6:13 pm โดย pprn
VDO - รีวิว การใช้งานคูปอง Joomshopping
โดย pprn พฤ 01 พ.ย. 2018 6:12 pm บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
0
5
พฤ 01 พ.ย. 2018 6:12 pm โดย pprn
B - ปิด Extension เปลี่ยนแปลงเทมเพลตแล้วยังเป็นเทมเพลตของ Thai VI
โดย Parichat พฤ 01 พ.ย. 2018 5:20 pm บอร์ด ThaiVI - Tester
3
22
พฤ 08 พ.ย. 2018 3:51 pm โดย Ittichai_chupol
B - ยังไม่ได้แปลภาษาใน Extension show post member explain
โดย Parichat พฤ 01 พ.ย. 2018 4:57 pm บอร์ด ThaiVI - Tester
1
10
พฤ 01 พ.ย. 2018 6:58 pm โดย Ittichai_chupol
R- mdsoft_follows_work_service_print - ใบติดตามงาน (MT24)
โดย prakon พฤ 01 พ.ย. 2018 4:30 pm บอร์ด MT24 - นายปกรณ์ วิริยะธนวิโรจน์
3
23
จ 05 พ.ย. 2018 5:19 pm โดย prakon
งานประจำวันที่ 1 พฤศจิกายน 2561
โดย pprn พฤ 01 พ.ย. 2018 10:19 am บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
1
7
พฤ 01 พ.ย. 2018 7:19 pm โดย pprn
งานประจำวันที่ 1 พฤษจิกายน 2561
โดย prakon พฤ 01 พ.ย. 2018 10:18 am บอร์ด MT24 - นายปกรณ์ วิริยะธนวิโรจน์
1
8
พฤ 01 พ.ย. 2018 8:18 pm โดย prakon
งานประจำวันที่ 1 พฤศจิกายน 2561
โดย tai14 พฤ 01 พ.ย. 2018 10:09 am บอร์ด MT26 - นางสาวอัครยุภา ยงยุทธ
1
10
พฤ 01 พ.ย. 2018 7:01 pm โดย tai14
งานประจำวันที่ 1 พฤศจิกยน 2561
โดย tatiya พฤ 01 พ.ย. 2018 10:02 am บอร์ด M065 - ตติยะ นาชัย
1
6
พฤ 01 พ.ย. 2018 10:04 pm โดย tatiya
งานประจำวันที่ 01 พฤศจิกายน 2561
โดย Ittichai_chupol พฤ 01 พ.ย. 2018 10:00 am บอร์ด M070 - อิทธิชัย ชูผล
1
7
พฤ 01 พ.ย. 2018 7:17 pm โดย Ittichai_chupol
งานประจำวันที่ 01 พฤศจิกายน 2561
โดย nice_13 พฤ 01 พ.ย. 2018 9:43 am บอร์ด M071 - พิชญ์สินี คงจร
1
7
พฤ 01 พ.ย. 2018 7:08 pm โดย nice_13
งานประจำวันที่ 31 ตุลาคม 2561
โดย Parichat พ 31 ต.ค. 2018 10:35 pm บอร์ด Part time work M061
7
28
จ 05 พ.ย. 2018 11:45 pm โดย Parichat
เมื่อขอลาออกเหมือนเพื่อน
โดย tai14 พ 31 ต.ค. 2018 7:48 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
312
พ 31 ต.ค. 2018 7:48 pm โดย tai14