Liên kết trong foreach trong PHP
Khi làm việc với vòng lặp foreach,
việc thay đổi biến cho các phần tử
không dẫn đến thay đổi trong chính mảng:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
$elem++;
}
var_dump($arr); // sẽ không thay đổi
?>
Tuy nhiên, có thể đạt được hiệu quả mong muốn nếu khai báo biến cho các phần tử là một liên kết. Trong trường hợp này, các thay đổi của biến này sẽ dẫn đến những thay đổi trong mảng:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem++;
}
var_dump($arr); // sẽ thay đổi
?>
Hãy sửa đoạn mã sau đây để nó hoạt động theo đúng ý định:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem = sqrt($elem);
}
var_dump($arr);
?>
Hãy sửa đoạn mã sau đây để nó hoạt động theo đúng ý định:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as &$elem) {
$elem ** 2;
}
var_dump($arr);
?>