10/10/2018, 10:35

Bạn nào giúp mình cái này với. (chẳng biết đặt tên nó là gì nữa)

Mình đang học lập trình trên php. mình thắc mắc cái dấu & đứng trước các hàm các biến trong php có chức năng gì. Cái này mình còn lơ mơ quá lên mong các bạn giúp.
diepnghitinh viết 12:37 ngày 10/10/2018
cái này là con trỏ bạn à
honnhienh viết 12:48 ngày 10/10/2018
Thêm thông tin đuoc hog bạn
pcdinh viết 12:47 ngày 10/10/2018
Cái đó gọi là toán tử tham chiếu. Trong PHP ko có cái gì gọi là con trỏ (pointer) như trong C. Cũng giống như toán tử \$ của Perl, toán tử & làm nhiệm vụ tạo ra một tham chiếu đến 1 nội dung cho trước: nội dung mảng, nội dung của đối tượng ... thay vì tạo ra một bản sao nôi dung mới.

http://www.php.net/manual/en/languag...ences.pass.php
thuyduongcd viết 12:45 ngày 10/10/2018
Giả sử bạn có 1 hàm nhận vào 1 tham số. Nếu không dùng & thì tham số này chỉ được sử dụng giá trị của nó (sau khi ra khỏi hàm thì giá trị biến truyền vào không thay đổi), còn nếu dùng & phía trước thì biến truyền vào là một tham biến thực sự (giá trị biến sẽ thay đổi sau khi ra khỏi hàm (nếu có)).

Lấy ví dụ bạn có 2 hàm:
Code:
//add_1 không có &
function add_1($a){
   $a++;
}
// add_2 có &
function add_2(&$a){
   $a++;
}

$b=4;

add_1($b);
echo $b; //kết quả =4 
//bạn thấy sau khi gọi hàm add_1, biến b vẫn không thay đổi vì hàm add_1 chỉ lấy giá trị của b mà dùng thôi

add_2($b);
echo $b; //kết quả =5
//sau khi gọi add_2, giá trị của b thay đổi (do trong hàm thay đổi, thực chất là thay đổi $a). Như vậy, khi dùng &, hàm sẽ tạo 1 bản sao của biến truyền vào và mọi thao tác liên quan đến tham biến này cũng sẽ ảnh hưởng đến biến truyền vào (nói đơn giản, $a là đại diện cho $b)
Nó cũng tương tự như từ khóa byval trong VB.NET, nhưng ngược lại:
VB.NET: có byval => dùng giá trị (tham trị); không byval => dùng biến (tham biến)
PHP: có & => dùng tham biến; không & => tham trị
diepnghitinh viết 12:38 ngày 10/10/2018
bổ sung nhé ^^

đây gọi là truyền tham trị
function add_1($a){
}

còn đây là truyền tham chiếu
function add_2(&$a){
}
honnhienh viết 12:39 ngày 10/10/2018
thank các bác giúp đỡ
vvthong viết 12:51 ngày 10/10/2018
Dấu & ở trước là con trỏ để lấy địa chỉ các ô nhớ
Bài liên quan
0