Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> PHP

PHP ส่งคืนค่า


แนะนำตัว

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

ฟังก์ชันส่งคืน

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

ตัวอย่าง

<?php
function add($var1, $var2){
   $var3= $var1+$var2 ;
   return $var3;
}
$x=10;
$y=20;
$z=add($x,$y);
echo "addition=$z";
?>

ผลลัพธ์

ซึ่งจะให้ผลลัพธ์ตามมา −

addition=30

การคืนค่าอาร์เรย์

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

ตัวอย่าง

<?php
function result($var1, $var2){
   $r1=$var1+$var2;
   $r2=$var1-$var2;
   $r3=$var1*$var2;
   $r4=$var1/$var2;
   return array("add"=>$r1,"sub"=>$r2,"multiply"=>$r3,"division"=>$r4);
}
$x=10;
$y=20;
$arr=result($x,$y);
foreach ($arr as $k=>$v){
   echo $k . "->" . $v . "\n";
}
?>

ผลลัพธ์

ซึ่งจะให้ผลลัพธ์ตามมา −

add->30
sub->-10
multiply->200
division->0.5

ส่งคืนโดยอ้างอิง

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

ในตัวอย่างต่อไปนี้ myfunction() มีสแตติกอาร์เรย์ องค์ประกอบหนึ่งถูกส่งกลับโดยการอ้างอิงและยอมรับในตัวแปร ค่าของตัวแปรจะถูกแก้ไขและเรียกฟังก์ชันเดิมอีกครั้ง อาร์เรย์ในฟังก์ชันควรแสดงค่าที่เปลี่ยนไป

ตัวอย่าง

<?php
function &myfunction(){
   static $arr=[1,2,3,4,5];
   echo "array elements: ";
   foreach ($arr as $i){
      echo "$i ";
   }
   echo "\n";
   return $arr[2];
}
$var=&myfunction();
echo "returned by reference : $var\n";
$var=100;
$var=&myfunction();
?>

ผลลัพธ์

ซึ่งจะให้ผลลัพธ์ตามมา −

array elements: 1 2 3 4 5
returned by reference : 3
array elements: 1 2 100 4 5

ค่าของตัวแปร $x และ $y จะถูกสับเปลี่ยนในฟังก์ชัน swap() เนื่องจากตัวแปรถูกส่งโดยการอ้างอิง ตัวแปรจึงแสดงค่าที่แก้ไขนอกฟังก์ชันด้วย

คำแนะนำประเภทการส่งคืน (การประกาศประเภทการส่งคืน)

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

ไวยากรณ์

//define a function with type hints for return value
function myfunction($arg1, $arg2): type{
   ..
   ..
   return $var;
}

ประเภทข้อมูล PHP มาตรฐานทั้งหมด รวมถึงประเภทสเกลาร์, อาร์เรย์, คลาส/อินเทอร์เฟซ, iterable และอ็อบเจ็กต์ เป็นประเภทที่ถูกต้องสำหรับการให้คำแนะนำประเภทสำหรับตัวแปรส่งคืนในการประกาศฟังก์ชัน

ตัวอย่าง

<?php
function add($x, $y): float{
   return $x+$y;
}
$var=add(5,8);
var_dump($var);
?>

ผลลัพธ์

ซึ่งจะให้ผลลัพธ์ตามมา −

float(13)

การใช้คำสั่งประกาศด้วย strict_types=1 จะป้องกันการบีบบังคับของประเภทข้อมูล

ตัวอย่าง

<?php
declare (strict_types=1);
function add($x, $y): int{
   return $x+$y;
}
$var=add(5.5,8.8);
var_dump($var);
?>

ผลลัพธ์

ตอนนี้จะมีข้อยกเว้นดังต่อไปนี้ -

PHP Fatal error: Uncaught TypeError: Return value of add() must be of the type integer, float returned