Giải thích việc truyền tham số hàm và phạm vi của một biến trong php

Theo mặc định, các biến PHP, nhưng không phải đối tượng, được truyền theo giá trị. Khi các biến PHP được truyền theo giá trị, phạm vi biến, được xác định ở cấp hàm được liên kết trong phạm vi của hàm. Việc sửa đổi một trong hai biến không có tác động

Hãy xem một ví dụ

Đầu ra sẽ như sau

  Function w3docs
  Global w3docs

Để truyền biến theo tham chiếu, cần thêm ký hiệu dấu và [&] trước đối số của biến

Một ví dụ về một chức năng như vậy sẽ như sau. hàm[ &$x ]

Phạm vi của các biến toàn cục và hàm trở thành toàn cầu. Lý do là chúng được xác định bởi cùng một tham chiếu. Do đó, sau khi thay đổi biến toàn cục, biến bên trong hàm cũng bị thay đổi theo.

Đây là một ví dụ rõ ràng

đầu ra sẽ là

  Function w3docs 
  Function w3docs
Các đối tượng PHP theo mặc định đang được truyền theo tham chiếu

Đầu ra sẽ như sau

1

Theo quy định, các biến PHP bắt đầu bằng dấu $ theo sau là tên biến

Khi gán một giá trị văn bản cho một biến, việc đặt dấu ngoặc kép xung quanh giá trị là cần thiết

Khác với các ngôn ngữ lập trình khác, PHP không có lệnh khai báo biến. Nó được tạo ra tại thời điểm một giá trị được gán cho nó lần đầu tiên

Trong PHP, biến là nơi chứa dữ liệu

Các biến PHP có thể có cả tên ngắn [ví dụ: x và y] và tên mô tả hơn [tên trái cây, tuổi, chiều cao, v.v.]

• Biến toàn cục
  • Biến tĩnh
  • Truyền biến cho hàm theo tham chiếu

Phạm vi của một biến là ngữ cảnh trong đó nó được xác định và có thể được sử dụng.
Các biến được sử dụng trong các hàm PHP có thể có ba loại. cục bộ, toàn cầu và tĩnh
Bất kỳ biến nào được xác định bên trong hàm theo mặc định được giới hạn trong phạm vi hàm cục bộ, chỉ có sẵn trong mã trong hàm đó. Ví dụ.

Biểu hiện "echo $x" bên ngoài hàm trả về lỗi vì biến $x không được xác định hoặc nhận dạng bên ngoài hàm test[], nhưng câu lệnh "echo" bên trong hàm đề cập đến một $x cục bộ . 
Một ví dụ khác.
Lần này, biến $x được định nghĩa bên ngoài hàm chứ không phải bên trong hàm. 
Như bạn có thể thấy, hàm gọi trả về thông báo lỗi, bởi vì câu lệnh "echo" đề cập đến phiên bản cục bộ của biến $x và nó chưa được gán giá trị trong phạm vi này.

biến toàn cục

Một biến toàn cục có thể được truy cập trong bất kỳ phần nào của chương trình.
Nếu bạn muốn sử dụng bên trong một hàm một biến được định nghĩa bên ngoài nó, thì biến đó phải được khai báo rõ ràng là toàn cục trong hàm. Điều này được thực hiện bằng cách đặt từ khóa TOÀN CẦU [hoặc toàn cầu] trước biến sẽ được công nhận là toàn cầu [hoặc nhiều biến hơn được phân tách bằng dấu phẩy]. Điều này sẽ mở rộng phạm vi của biến đó bên trong hàm.
  - Ví dụ.
'. $total;            // 17
?>
Bằng cách khử các biến $x và $y TOÀN CẦU trong hàm, giá trị của các biến này có thể được sử dụng bên trong hàm.
Biến $total được đặt là TOÀN CẦU, tất cả các tham chiếu đến nó, bên trong hay bên ngoài hàm, đều tham chiếu đến cùng một phiên bản toàn cục. Thay đổi giá trị của nó trong chức năng sẽ chuyển tiếp.
Mã trên sẽ xuất ra.

biến tĩnh

Một biến tĩnh chỉ tồn tại trong phạm vi hàm cục bộ, nhưng nó không mất giá trị khi thực thi chương trình rời khỏi phạm vi này.
Việc khai báo một biến tĩnh làm cho giá trị của nó được hàm ghi nhớ cho lần gọi tiếp theo.
Để khai báo một biến tĩnh, hãy đặt từ khóa STATIC [hoặc tĩnh] trước biến [hoặc nhiều biến hơn được phân tách bằng dấu phẩy].
  - Ví dụ.
 x = '. $x;
  $x++;
}

// Function with STATIC variable
function f_static[] {
  STATIC $x = 0;
  echo '
x = '. $x; $x++; } // Calling the f_local[] function f_local[]; // 0 f_local[]; // 0 f_local[]; // 0 echo ''; // Caling the f_static[] function f_static[]; // 0 f_static[]; // 1 f_static[]; // 2 ?>
Mỗi khi hàm f_local[] được gọi, nó đặt $x thành 0 và in ra 0. $x++ làm tăng biến không có mục đích gì vì ngay sau khi hàm thoát, giá trị của biến $x sẽ biến mất.
Trong hàm f_static[], $x chỉ được khởi tạo trong lần gọi hàm đầu tiên và mỗi khi hàm f_static[] được gọi, nó sẽ ghi nhớ giá trị của $x, đồng thời sẽ in ra và tăng dần giá trị đó. Mã này sẽ xuất ra.

x = 0
x = 0
x = 0

x = 0
x = 1
x = 2

Truyền biến cho hàm theo tham chiếu

Các đối số được truyền vào một hàm PHP được truyền theo giá trị, có nghĩa là các giá trị của các đối số được sao chép và hàm sử dụng các bản sao của các giá trị của chúng chứ không phải chính các biến, vì vậy, hàm không thể .
Tuy nhiên, bạn có thể truyền một biến bằng cách tham chiếu đến một hàm để hàm đó có thể sửa đổi biến đó.
Để điều này hoạt động, bạn phải thêm ký tự dấu và [&] trong mã định nghĩa của hàm vào biến được truyền theo tham chiếu.
  - Ví dụ.
Hàm test[] thay đổi giá trị của biến được truyền dưới dạng đối số cho nó. 
Cấu trúc &$var yêu cầu PHP truyền giá trị của đối số cho hàm, đồng thời mở rộng phạm vi của biến đối số đó vào hàm để khi hàm kết thúc công việc, .
Sau khi hàm test[] được gọi, giá trị của biến $x [dùng làm đối số] bị thay đổi và biểu thức "echo $x;" .

Tham số chức năng trong PHP là gì?

Hàm tham số PHP là hàm có tham số . Bạn có thể truyền bất kỳ số lượng tham số nào bên trong một hàm. Các tham số được truyền này hoạt động như các biến bên trong hàm của bạn. Chúng được chỉ định bên trong dấu ngoặc đơn, sau tên hàm.

Phạm vi của tham số chức năng là gì?

Tên tham số tương tự như khai báo tên biến ở đầu hàm. Vì vậy, phạm vi của một tham số là chức năng mà nó là một phần của

Những chức năng được sử dụng cho các tham số biến trong PHP?

PHP cung cấp ba hàm bạn có thể sử dụng trong hàm để truy xuất các tham số được truyền cho nó. func_get_args[ ] trả về một mảng gồm tất cả các tham số được cung cấp cho hàm, func_num_args[ ] trả về số lượng tham số được cung cấp cho hàm và func_get_arg[ ] trả về một đối số cụ thể từ các tham số

Hàm trong PHP là gì?

Hàm PHP là một đoạn mã có thể được sử dụng lại nhiều lần. Nó có thể lấy đầu vào làm danh sách đối số và giá trị trả về. Có hàng nghìn hàm dựng sẵn trong PHP. Trong PHP, chúng ta cũng có thể định nghĩa Hàm có điều kiện, Hàm bên trong Hàm và Hàm đệ quy

Chủ Đề