Giới thiệu
Một hàm có thể có trả về là câu lệnh cuối cùng trong phần thân của nó mặc dù nó không bắt buộc. Khi một hàm được gọi, điều khiển chương trình quay trở lại môi trường gọi sau khi thực hiện các câu lệnh trong khối nội dung của nó - bất kể câu lệnh cuối cùng trong khối hàm có được trả về hay không. Trong trường hợp không có câu lệnh chạy lại, điều khiển trả về giá trị NULL cho người gọi. Nếu câu lệnh return bao gồm một mệnh đề biểu thức, giá trị của biểu thức được trả về. Hàm chỉ có thể trả về một giá trị có thể là kiểu vô hướng, mảng hoặc một đối tượng. Giá trị trả về có thể được gán cho một số biến để xử lý tiếp theo
Hàmcó trả về
Trong ví dụ sau, một hàm trả về tổng của hai số nguyên được truyền dưới dạng đối số
Ví dụ
<?php function add($var1, $var2){ $var3= $var1+$var2 ; return $var3; } $x=10; $y=20; $z=add($x,$y); echo "addition=$z"; ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau. -
addition=30
Trả về mảng
Hàm chỉ có thể trả về một giá trị. Tuy nhiên, mảng nhiều giá trị có thể được trả về. Ví dụ sau chuyển hai số cho một hàm trả về mảng cộng, trừ, nhân và chia
Ví dụ
<?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"; } ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau. -
add->30 sub->-10 multiply->200 division->0.5
Trả lại bằng cách tham khảo
Cũng giống như các đối số có thể được truyền bằng tham chiếu, một hàm cũng có thể trả về bằng tham chiếu. Vì mục đích đó, tên của hàm phải có tiền tố là ký hiệu $. Hơn nữa, biểu tượng &cũng phải được đưa ra trong lệnh gọi hàm
Trong ví dụ sau, hàm my function () có một mảng tĩnh. Một trong các phần tử của nó được trả về bằng tham chiếu và được chấp nhận trong một biến. Giá trị của biến sau đó được sửa đổi và hàm tương tự được gọi lại. Mảng trong hàm bây giờ sẽ hiển thị giá trị của nó đã thay đổi.
Ví dụ
<?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(); ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau. -
array elements: 1 2 3 4 5 returned by reference : 3 array elements: 1 2 100 4 5
Giá trị của các biến $ x và $ y được hoán đổi cho nhau trong hàm swap (). Vì các biến được truyền bằng tham chiếu, nên các biến cũng hiển thị các giá trị đã sửa đổi bên ngoài hàm
gợi ý kiểu trả về (khai báo kiểu trả về)
Từ PHP 7 trở đi, bạn có thể chỉ định gợi ý kiểu cho biến / đối tượng trả về, cũng như có thể khai báo kiểu cho các đối số. Đối với kiểu trả về, tất cả các kiểu vô hướng, lớp và mảng đều có thể được sử dụng
Cú pháp
//define a function with type hints for return value function myfunction($arg1, $arg2): type{ .. .. return $var; }
Tất cả các kiểu dữ liệu PHP tiêu chuẩn bao gồm kiểu vô hướng, mảng, lớp / giao diện, có thể lặp lại và đối tượng là các kiểu hợp lệ để cung cấp gợi ý kiểu cho biến trả về trong khai báo hàm
Ví dụ
<?php function add($x, $y): float{ return $x+$y; } $var=add(5,8); var_dump($var); ?>
Đầu ra
Điều này sẽ tạo ra kết quả sau. -
float(13)
Sử dụng câu lệnh khai báo với precision_types =1 sẽ ngăn chặn việc ép buộc các loại dữ liệu
Ví dụ
<?php declare (strict_types=1); function add($x, $y): int{ return $x+$y; } $var=add(5.5,8.8); var_dump($var); ?>
Đầu ra
Thao tác này bây giờ sẽ đưa ra ngoại lệ như sau -
PHP Fatal error: Uncaught TypeError: Return value of add() must be of the type integer, float returned