Các thử nghiệm thực tế cho rằng phiên đầu tiên là tốt hơn so với thứ hai.
Đó không phải là lời khuyên tốt nhất. Chúng là các công cụ khác nhau cho các công việc khác nhau.
&
có nghĩa là xử lý biến theo tham chiếu thay vì bản sao.
Khi bạn có tham chiếu biến, nó tương tự như con trỏ trong C. Truy cập biến cho phép bạn truy cập vị trí bộ nhớ của biến ban đầu, cho phép bạn sửa đổi giá trị thông qua một số nhận dạng khác.
// Some variable.
$a = 42;
// A reference to $a.
// & operator returns a reference.
$ref = &$a;
// Assignment of $ref.
$ref = "fourty-two";
// $a itself has changed, through
// the reference $ref.
var_dump($a); // "fourty-two"
Ví dụ tham chiếu trên CodePad.
Hành vi bình thường của foreach
là tạo bản sao có sẵn cho khối được liên kết. Điều này có nghĩa là bạn được tự do gán lại nó, và nó sẽ không ảnh hưởng đến thành viên mảng (điều này sẽ không xảy ra đối với các biến luôn là các tham chiếu, chẳng hạn như các cá thể lớp).
Sao chép ví dụ trên CodePad.
Ví dụ về lớp trên CodePad.
Sử dụng tham chiếu trong foreach
có một số tác dụng phụ, chẳng hạn như một tham chiếu lơ lửng $val
có thể được sửa đổi sau này do tai nạn và ảnh hưởng đến mảng.
Ví dụ về tham chiếu lơ lửng trên CodePad.
Vâng, nó có xu hướng gây nhầm lẫn cho mọi người tốt hơn: http://stackoverflow.com/questions/6287970/php-foreach-statement-by-reference-unexpected-behaviour-when-reusing-iterator –
Tôi khuyên bạn nên đọc [điều này ] (http://stackoverflow.com/questions/10057671/how-foreach-actually-works). – BlitZ
Bài kiểm tra nào? Tôi không thể tin rằng đây là từ ZCE –