Kết quả của đoạn code dưới đây là?
php
$op2 = "blabla";
function foo($op1)
{
echo $op1;
echo $op2;
}
foo("hello");
?>
Trả lời:
Đáp án đúng: C
Trong PHP, biến `$op2` được khai báo bên ngoài hàm `foo`, do đó nó có phạm vi toàn cục (global scope). Tuy nhiên, bên trong hàm `foo`, để truy cập biến toàn cục, chúng ta cần sử dụng từ khóa `global`. Nếu không có từ khóa `global`, PHP sẽ coi `$op2` là một biến cục bộ (local scope) trong hàm `foo`. Vì `$op2` không được khai báo trong hàm `foo` nên giá trị của nó là null hoặc không xác định và PHP có thể đưa ra một thông báo warning hoặc notice tùy thuộc vào cấu hình. Tuy nhiên, trong trường hợp này, nó vẫn sẽ in ra giá trị của `$op1` trước khi cố gắng truy cập `$op2`. Do đó, chương trình sẽ in ra "hello" trước, và sau đó do không tìm thấy biến `$op2` trong phạm vi của hàm `foo` nên nó sẽ tiếp tục tìm ở phạm vi global. Vì biến `$op2` ở global scope có giá trị là "blabla", nên kết quả cuối cùng là "helloblabla".