Các mảng php được truyền theo tham chiếu
Vì vậy, ngày hôm qua tôi đã có một trong những cái rắm não lớn nhất trong lịch sử đầy hơi hộp sọ. Dưới đây là đoạn mã đã bốc mùi trong hộp sọ của tôi Show $the_array = array();function the_function(){ Bây giờ điều tôi đang mong đợi từ điều này là vòng lặp foreach sẽ hoạt động theo cách của nó thông qua mảng $the_inner_array nên nó sẽ sửa đổi mảng $the_array và thêm dữ liệu vào đó. Trong C++, tôi đã sử dụng tính năng chuyển qua tham chiếu trước đây, nhưng chưa bao giờ trong PHP. Vì một số lý do (chủ yếu là do tôi thiếu kiến thức), tôi đã cố gắng chuyển dữ liệu tới mảng $the trong phạm vi toàn cầu. Sau khi tôi khắc phục sự cố này và chuyển mảng vào hàm cùng với & đến cụ thể mà tôi muốn chuyển qua tham chiếu, tôi có thể thêm dữ liệu vào $the_array và mã của tôi đã hoạt động. Đoạn mã dưới đây sẽ phù hợp với bạn trong trường hợp bạn cũng bị rắm não này. Để biết thêm thông tin về việc chuyển qua tham chiếu trong PHP, hãy xem → http. //php. net/manual/vi/ngôn ngữ. người giới thiệu. vượt qua. php Đoạn mã trên in 1, 2, 3, 4, 5. Điều này là do mảng được truyền dưới dạng tham chiếu, nghĩa là hàm (pass_by_reference) không thao tác với bản sao của biến được truyền, mà là chính biến thực tế Để biến một biến được truyền theo tham chiếu, nó phải được khai báo bằng dấu và (&) ở trước trong phần khai báo của hàm 1) Khi một mảng được truyền dưới dạng đối số cho một phương thức hoặc hàm, thì nó được truyền theo tham chiếu hay theo giá trị? 2) Khi gán một mảng cho một biến, biến mới có phải là tham chiếu đến mảng ban đầu không hay nó là một bản sao mới?
4 có phải là tham chiếu đến 5 không?Giải pháp tốt nhấtĐối với phần thứ hai của câu hỏi của bạn, hãy xem trang mảng của sách hướng dẫn, trong đó nêu rõ (trích dẫn)
Và ví dụ đã cho
Hãy xem xét ví dụ về mã này
Nó sẽ cho đầu ra này
Điều này cho biết hàm chưa sửa đổi mảng "bên ngoài" được truyền dưới dạng tham số. nó được chuyển dưới dạng bản sao và không phải là tài liệu tham khảo Nếu bạn muốn nó được chuyển qua tham chiếu, bạn sẽ phải sửa đổi chức năng theo cách này
Và đầu ra sẽ trở thành ________số 8Vì, lần này, mảng đã được chuyển "theo tham chiếu"
Giải pháp liên quanC++ – Sự khác nhau giữa biến con trỏ và biến tham chiếu trong C++
Javascript – Cách kiểm tra xem một mảng có chứa giá trị hay không trong JavaScriptCác trình duyệt hiện đại có 7, thực hiện chính xác điều đó và được mọi người hỗ trợ rộng rãi ngoại trừ IE 2Bạn cũng có thể sử dụng 8, cách này ít trực tiếp hơn nhưng không yêu cầu polyfill cho các trình duyệt lỗi thời 3Nhiều khung cũng cung cấp các phương pháp tương tự
Lưu ý rằng một số khung triển khai chức năng này dưới dạng hàm, trong khi các khung khác thêm chức năng vào nguyên mẫu mảng PHP có truyền mảng theo tham chiếu hoặc giá trị không?Khi một mảng được truyền cho một phương thức hoặc hàm trong PHP, nó được truyền theo giá trị trừ khi bạn truyền nó một cách rõ ràng bằng tham chiếu , chẳng hạn như . kiểm tra hàm(&$array) { $array['new'] = 'hey';
Các mảng có tự động được chuyển qua tham chiếu không?Thường không cần phải truyền một mảng rõ ràng bằng tham chiếu vì mảng luôn được truyền theo tham chiếu .
PHP có truyền đối tượng theo tham chiếu không?Trong PHP, các đối tượng được truyền theo tham chiếu theo mặc định . Ở đây, tham chiếu là bí danh, cho phép hai biến khác nhau ghi vào cùng một giá trị. Một biến đối tượng không chứa chính đối tượng làm giá trị.
Làm cách nào để chuyển mảng trong PHP?Chuyển mảng PHP sang JavaScript rất dễ dàng bằng cách sử dụng Ký hiệu đối tượng JavaScript (JSON) . Phương pháp 1. Sử dụng hàm json_encode(). Hàm json_encode() được sử dụng để trả về biểu diễn JSON của một giá trị hoặc mảng. Hàm có thể lấy cả mảng một chiều và nhiều chiều. |