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 w3docsCá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 '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.
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 ?>
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 = 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;" .