การสร้างเว็บเพจโดยใช้ภาษา
PHP บทที่ 24
การสลับค่าของตัวแปรสองตัว
swap()
ถ้าเราต้องการสลับค่าระหว่างสองตัวแปร
เราก็เขียนฟังก์ชัน swap() ขึ้นมา
| <?
function swap(&$a, &$b) {
$t = $a;
$a = $b;
$b = $t;
}
$x=10;
$y=3;
echo "x=",$x,",y=",$y,"\n";
swap($x,$y);
echo "x=",$x,",y=",$y,"\n";
?> |
ตัวอย่างข้างบน
ก็แสดงให้เห็นวิธีการใช้ call-by-reference อีกเช่นกัน
มีข้อสังเกตอยู่ว่า
การใช้ call-by-reference ไม่จำเป็นต้องทำตอนนิยามฟังก์ชันเท่านั้น
แต่อาจจะทำตอนผ่านตัวแปรเมื่อเรียกใช้งานจริง ตัวอย่างเช่น
| <?
function swap($a, $b) {
$t = $a;
$a = $b;
$b = $t;
}
$x=10;
$y=3;
echo "x=",$x,",y=",$y,"\n";
swap(&$x, &$y);
echo "x=",$x,",y=",$y,"\n";
?> |
จากตัวอย่างนี้
เราแก้ไขฟังก์ชัน swap() ทำให้ไม่สนับสนุน call-by-reference ดังนั้นเพื่อจะใช้งานได้อย่างถูกต้อง
เราก็จะต้องใช้ reference ของตัวแปรเป็นอาร์กิวเมนต์ของฟังก์ชัน
ในเวลาที่เรียกใช้ ซึ่งก็คือ swap(&$x,&$y) ถ้าเราไม่ทำอย่างนี้
เช่น เขียนว่า swap($x,$y) ก็จะไม่มีการสลับค่าของตัวแปรทั้งสอง
เนื่องจากว่า เมื่ออยู่ภายในฟังก์ชัน swap() แล้ว เราไม่สามารถเปลี่ยนแปลงค่าของตัวแปรเหล่านั้นได้
คืออ่านได้ แต่ไม่สามารถกำหนดค่าใหม่ได้
|