Thay đổi giá trị một phần tử trong mảng với lệnh `foreach` trong php | Laptrinhcanban.com

Thay đổi giá trị một phần tử trong mảng với lệnh `foreach` trong php

Hướng dẫn cách thay đổi giá trị một phần tử trong mảng với lệnh foreach trong php.
Hãy tưởng tượng bạn đang phụ trách làm một mẻ bánh nướng trong một nhà hàng 5 sao nọ. Bỗng nhiên bạn phát hiện có một cái bánh bị cháy khét lẹt đang nằm giữa những chiếc bánh ngon lành khác. Đã đến lúc bạn cần thay chiếc bánh đó bằng một chiếc bánh thơm ngon khác rồi đấy. Còn việc thay đổi bánh thế nào, hãy cùng Kiyoshi tìm hiểu cách thay đổi giá trị một phần tử trong mảng với lệnh foreach trong php thông qua bài học hôm nay nhé.

Khi bạn lưu trữ giá trị của một phần tử trong một biến bằng câu lệnh foreach, một bản sao của giá trị sẽ được gán cho biến đó.

Do đó, bạn có thể sử dụng giá trị của phần tử thông qua biến, nhưng không thể thay đổi giá trị của phần tử đó trong mảng.
Để thay đổi giá trị một phần tử trong mảng với lệnh foreach trong php, bạn cần cú pháp sau đây:

Cú pháp thay đổi giá trị một phần tử trong mảng với lệnh foreach trong php

foreach (mảng as & biến giá trị){
Câu lệnh 1;
Câu lệnh 2;
}

Trong đó:

  • mảng là tên mảng cần lấy phần tử ra
  • biến giá trị là một biến được khởi tạo để chứa giá trị của phần tử
  • khối câu lệnh là tập hợp các câu lệnh sẽ chạy trong vòng lặp

Khác với cú pháp thông thường của lệnh foreach trong php, chúng ta thêm ký hiệu & vào đằng trước biến giá trị.
Ký hiệu & giúp chúng ta khai báo biến giá trị sẽ tham chiếu trực tiếp giá trị của phần tử thay vì sử dụng bản copy của phần tử đó.
Do đó khi chúng ta thay đổi giá trị của biến giá trị thì giá trị của phần tử đó cũng thay đổi theo.

Ví dụ

Hãy cùng xem ví dụ dưới đây để hiểu rõ hơn.

$bảng_giá_tiền = array(80, 100, 120);

foreach ($bảng_giá_tiền as &$value){
$value *= 1.05;
}
unset($value);

Chúng ta lấy từng giá tiền trong $bảng_giá_tiền, nhân lên với 1.05 lần và sau đó thay đổi giá tiền đó bằng giá tiền mới.

Lưu ý trong ví dụ này, sau khi kết thúc lệnh foreach, chúng ta thêm lệnh unset($value); để reset lại biến $value nhằm kết thúc việc tham chiếu trực tiếp giá trị của phần tử của biến này.

Lý do là bởi dù lệnh foreach đã kết thúc, nhưng biến $value vẫn tiếp tục tham chiếu giá trị của phần tử trong mảng $bảng_giá_tiền, nên trong các câu lệnh tiếp theo của chương trình php, có khả năng giá trị của phần tử trong $bảng_giá_tiền sẽ bị thay đổi mỗi khi biến $value được sử dụng trong các câu lệnh khác.

Bằng việc sử dụng unset, chúng ta đã reset lại biến giá trị và kết thúc phiên tham chiếu ở trên.

Thực hành

Trăm hay không bằng tay quen, hãy cùng thực hành với ví dụ sau đây:
Chương trình thay đổi giá tiền trong bảng giá

<?php

print 'Chương trình thay đổi giá tiền trong bảng giá'."\n";
$bảng_giá_tiền = array(80, 100, 120);

print 'Giá khởi điểm:'."\n";
foreach ($bảng_giá_tiền as $value){
print $value."\n";
}


foreach ($bảng_giá_tiền as &$value){
$value *= 1.05;
}
unset($value);

print 'Giá thay đổi:'."\n";
foreach ($bảng_giá_tiền as $value){
print $value."\n";
}

?>

Tổng kết

Chúng ta có thể thay đổi giá trị một phần tử trong mảng với lệnh foreach trong php bằng cách khai báo biến tham chiếu trực tiếp giá trị của phần tử trong mảng.
Để thực hiện được điều này, chúng ta sẽ thêm ký hiệu ‘&’ vào trước biến giá trị trong lệnh foreach.

Cần lưu ý, sau khi kết thúc lệnh foreach, chúng ta cần dùng lệnh unset để hủy phiên tham chiếu biến đã dùng.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.