Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Giá trị trả về (Returning values) trong PHP

Giới thiệu

Function có thể có return làm câu lệnh cuối trong body, tuy không bắt buộc. Khi function được gọi, điều khiển quay lại môi trường gọi sau khi thực thi block body - bất kể câu lệnh cuối có phải return hay không. Nếu thiếu return, điều khiển trả về NULL. Nếu return có biểu thức, giá trị biểu thức được trả về. Function chỉ trả về một giá trị (scalar, array, hoặc object). Giá trị trả về có thể gán cho biến để xử lý tiếp.

Function có return

Ví dụ trả về tổng

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

Kết quả

addition = 30

Trả về mảng (Returning array)

Function chỉ trả về một giá trị. Tuy nhiên, có thể trả về mảng chứa nhiều giá trị. Ví dụ function nhận hai số trả về mảng gồm cộng, trừ, nhân, chia:

<?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";
}
?>

Kết quả

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

Trả về tham chiếu (Return by reference)

Giống như argument có thể truyền bằng tham chiếu, function cũng có thể trả về bằng tham chiếu. Tên function phải tiền tố bằng &. Ngoài ra, & cũng phải có ở lời gọi function.

Ví dụ: myfunction() có static array. Một phần tử được trả về bằng tham chiếu và gán cho biến. Giá trị biến bị sửa đổi và gọi lại function. Array trong function giờ显示 giá trị thay đổi.

<?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();
?>

Kết quả

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

Return type hints (Khai báo kiểu trả về)

Từ PHP 7, có thể chỉ định type hint cho biến/đối tượng trả về, tương tự khai báo kiểu cho argument. Tất cả scalar types, class, array đều dùng được.

Cú pháp

function myfunction($arg1, $arg2): type {
    ...
    return $var;
}

Tất cả kiểu dữ liệu PHP chuẩn (scalar, array, class/interface, iterable, object) đều hợp lệ cho return type hint.

Ví dụ return type float

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

Kết quả

float(13)

strict_types=1 ngăn chặn ép kiểu tự động

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

Kết quả

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