[PHP] – Bài 4: Vòng lặp trong PHP – Mảng và Thao tác với mảng

0

Trong bài học này, mình sẽ hướng dẫn về vòng lặp trong PHP, mảng dữ liệu và cách xử lý với mảng.

Video Vòng lặp trong PHP – Xử lý mảng

Hướng dẫn chi tiết

Vòng lặp là một mã lệnh thực hiện lặp đi lặp lại nhiều lần một công việc nào đó cho đến khi thỏa một điều kiện dừng.

Vòng lặp FOR

Cấu trúc:  for( biểu thức 1, biểu thức 2, biểu thức 3){ thực thi }

  • Biểu thức 1: khởi tạo biến đếm
  • Biểu thức 2: điều kiện dừng
  • Biểu thức 3: thay đổi giá trị biến đếm

3 biểu thức có thể không cần đầy đủ cả 3 nhưng vị trí của 3 biểu thức phải được đảm bảo. Các bạn xem ví dụ bên dưới để hiểu rõ hơn nhé.

for($i = 1; $i < 11; $i++){
   echo "Chào người thứ".$i;
}

Vòng lặp thiếu thành phần

+ Không có khởi tạo biến đếm

$stt_nguoi = 1;
for( ; $stt_nguoi < 11; $stt_nguoi++ ){
   echo "Chào người thứ".$stt_nguoi;
}

+ Không có biểu thức thay đổi biến đếm

$stt_nguoi = 1;
for( ; $stt_nguoi < 11; ){
   echo "Chào người thứ".$stt_nguoi;
   $stt_nguoi++;
}

+ Thiếu cả ba thành phần

$stt_nguoi = 1;
for( ; ; ){
   if($stt_nguoi < 11){
      echo "Chào người thứ".$stt_nguoi;
      $stt_nguoi++;
   }
   else{
      break;
   }
}

Lưu ý: Thiếu ở đây là không điền vào 3 vị trí của vòng for, nhưng sẽ tồn tại ở một trí khác của mã nguồn. Mặc dù không điền 3 biểu thức vào nhưng vẫn phải đảm bảo 2 dấu ;

Lệnh Break dùng để ngắt và thoát vòng lặp.

Lệnh Continue dùng để bỏ qua thao tác xử lý.

Các bạn xem ví dụ bên dưới. Vòng lặp sẽ chạy từ 1 đến 10. Tuy nhiên, tại $i === 6, thao tác in ra màn hình dòng chữ Chào người thứ 6 sẽ không được thực hiện. Tại $i === 10 (thỏa điều kiện $i > 9 và $i < 11), vòng lặp sẽ dừng.

for($i = 1; $i < 11; $i++){ 
   if($i === 6){ 
      continue; 
   } 
   if($i > 9){
      break;
   }
   echo "Chào người thứ".$i;
}

Vòng lặp WHILE

Cấu trúc: while( điều kiện ) { thực thi }

$stt = 1;
while($stt < 11){
   echo "Chào người thứ".$stt;
   $stt++;
}

Chuyển đổi while thành for bằng cách sử dụng vòng lặp for bị thiếu các thành phần mà mình đã hướng dẫn bên trên.

Vòng lặp DO – WHILE

Cấu trúc do { thực thi } while ( điều kiện )

Vòng lặp do while hoạt động gần giống vòng lặp while. Tuy nhiên, việc thực thi code sẽ diễn ra trước khi kiểm tra điều kiện. Do đó, vòng lặp while có thể không thực hiện một lần nào nhưng do while sẽ thực thi ít nhất 1 lần. Các bạn chạy ví dụ bên dưới và xem kết quả nhé.

$stt = 1;
while($stt < 1){
   echo "Chào người thứ".$stt;
   $stt++;
}
do{
   echo "Chào người thứ".$stt;
   $stt++;
}
while($stt < 1);

Vòng lặp FOREACH

Cấu trúc:

+ foreach( $mang as $key => $value) { thực thi }

Lấy cả key và value của phần tử trong mảng. Các bạn chạy thử ví dụ nhé.

$mang = array('phần tử 1', 'phần tử 2', 3); 
foreach($mang as $key => $value){
   echo $key.'=>'.$value;
}

+ foreach( $mang as $value) { thực thi }:

Lấy value không lấy key của phần tử trong mảng.

$mang = array('phần tử 1', 'phần tử 2', 3); 
foreach($mang as $value){
   echo $value;
}

Mảng dữ liệu – Array

Một mảng là một biến đặc biệt, có thể chứa nhiều hơn một giá trị tại một thời điểm.

Khai báo mảng $array = array();

hoặc $array = [ ];

Một số hàm xử lý với mảng

Tài liệu tham khảo một số hàm xử lý với mảng tại PHP.NET

array(): khởi tạo mảng, có thể thay thế bằng [ ]

array_push( mảng, phần tử thêm vào): thêm một phần tử vào mảng

in_array( giá trị phần tử, mảng ): kiểm tra phần tử trong mảng.

array_slice( mảng cần cắt, vị trí bắt đầu ): cắt mảng

array_merge(mảng 1, mảng 2): ghép nhiều mảng thành một mảng.

array_key_exists( key, mảng ) hoặc key_exists( key, mảng ): tìm phần tử theo key (khóa) trong một mảng.

count( mảng ): đếm số phần tử của mảng

Xử lý mảng với vòng lặp

Sử dụng vòng lặp for

Chúng ta vẫn sử dụng biến $mang bên trên nhé. Biến đếm của chúng ta là key của các phần tử trong mảng. Key mặc định sẽ bắt đầu từ 0 cho đến chiều dài mảng trừ đi 1. Ví dụ, mảng có 4 phần tử thì key sẽ từ 0 đến 4.

for( $key = 0;  $key < count($mang);  $key++ ){
   echo $key.'=>'.$mang[$key];
}

Sau khi chạy thử với biến $mang, các bạn thử chạy for với $mang_2 này nhé, xem kết quả trả về là gì.

$mang2 = array(
    'key1'  =>  'phần tử 1', 
    'key2'  => 'phần tử 2', 
    'key3'  => 3
);

Sử dụng vòng lặp while và do while

Tương tự như cách chuyển while sang for không đầy đủ cấu trúc.

$key = 0;
while($key < count($mang)){
echo $key.'=>'.$mang[$key];
$key++;
}

Sử dụng vòng lặp foreach

$mang = array('phần tử 1', 'phần tử 2', 3); // 0 1 2
foreach($mang as $key => $value){
   echo $key.'=>'.$value;
}
foreach($mang as $value){
   echo $value;
}

Code mẫu: Download

Nếu có thắc mắc, hãy đặt câu hỏi bằng cách comment bên dưới, qua email, hoặc nhắn tin qua Fanpage Góc làm web.

Liên hệ

Để lại một trả lời

Địa chỉ email của bạn sẽ không được công bố.