PHP - Mảng (Array)

Một mảng là một cấu trúc dữ liệu mà lưu giữ một hoặc nhiều kiểu giá trị giống nhau trong một giá trị đơn. Ví dụ, nếu bạn muốn lưu 100 số, thì thay vì định nghĩa 100 biến, nó là dễ dàng để định nghĩa một mảng có độ dài là 100.

Có 3 loại mảng khác nhau và mỗi giá trị mảng được truy cập bởi sử dụng một ID, mà được gọi là chỉ mục mảng.

  • Mảng số nguyên − Một mảng có chỉ mục ở dạng số. Giá trị được lưu trữ và truy cập tuyến tính.
  • Mảng liên hợp − Một mảng với chỉ mục ở dạng chuỗi kí tự. Mảng này lưu trữ các giá trị phần tử bằng sự kết hợp với các giá trị key thay vì trong một trật tự chỉ mục tuyến tính nghiêm ngặt như mảng số nguyên.
  • Mảng đa chiều − Một mảng chứa một hoặc nhiều mảng và các giá trị được truy cập bằng cách sử dụng nhiều chỉ mục.

Mảng số nguyên trong PHP

Các mảng loại này có thể lưu trữ các số, các chuỗi và bất kỳ đối tượng nào, nhưng chỉ mục mảng thì vẫn được biểu diễn bởi các số. Theo mặc định, chỉ mục mảng bắt đầu từ 0.

Ví dụ

Mảng này có thể lưu trữ số, chuỗi và bất kì đối tượng nào, nhưng chỉ mục của chúng sẽ được biểu diễn ở dạng số. Theo mặc định chỉ mục mảng bắt đầu từ 0.

Dưới đây là ví dụ minh họa cách tạo và truy cập mảng số nguyên trong PHP.

Ở đây, chúng ta đã sử dụng hàm array() để tạo mảng. Hàm này được giải thích trong chương phụ: Hàm mảng trong PHP ở trên.

<html>
   <body>
      <?php
         /* Phương thức thứ nhất để tạo mảng trong PHP. */
         $numbers = array( 1, 2, 3, 4, 5);


         foreach( $numbers as $value )
         {
            echo "Giá trị phần tử mảng là $value <br />";
         }

         /* Phương thức thứ hai để tạo mảng trong PHP. */
         $numbers[0] = "one";
         $numbers[1] = "two";
         $numbers[2] = "three";
         $numbers[3] = "four";
         $numbers[4] = "five";

         foreach( $numbers as $value )
         {
            echo "Giá trị phần tử mảng là $value <br />";
         }
      ?>
   </body>
</html>

Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả:

PHP - Mảng (Array) 1

Mảng liên hợp trong PHP

Các mảng liên hợp là khá giống với các mảng số nguyên về tính năng, nhưng chúng khác nhau về chỉ mục. Mảng liên hợp sẽ có chỉ mục ở dạng chuỗi để mà bạn có thể thiết lập một liên kết mạnh giữa key và value.

Để lưu giữ lương của nhân viên trong một mảng, một mảng chỉ mục số sẽ không là lựa chọn tốt nhất. Thay vào đó, chúng ta sẽ sử dụng các tên nhân viên như là các key trong mảng liên hợp, và value sẽ là lương tương ứng của họ.

Chú ý: Đừng giữ mảng liên hợp bên trong dấu trích dẫn kép trong khi in, nếu không thì nó sẽ không trả về bất kỳ giá trị nào.

Ví dụ

<html>
   <body>
      <?php
         /* Phương thức thứ nhất để tạo mảng liên hợp. */
         $luong_nhan_vien = array("hoang" => 2000, "manh" => 1000, "huong" => 500);


         echo "Lương của nhân viên hoang là ". $luong_nhan_vien['hoang'] . "<br />";
         echo "Lương của nhân viên manh là ".  $luong_nhan_vien['manh']. "<br />";
         echo "Lương của nhân viên huong là ".  $luong_nhan_vien['huong']. "<br />";


         /* Phương thức thứ hai để tạo mảng liên hợp. */
         $luong_nhan_vien['hoang'] = "high";
         $luong_nhan_vien['manh'] = "medium";
         $luong_nhan_vien['huong'] = "low";


         echo "Mức lương của nhân viên hoang là ". $luong_nhan_vien['hoang'] . "<br />";
         echo "Mức lương của nhân viên manh là ".  $luong_nhan_vien['manh']. "<br />";
         echo "Mức lương của nhân viên huong là ".  $luong_nhan_vien['huong']. "<br />";
      ?>

   </body>
</html>

Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả:

PHP - Mảng (Array) 2

Mảng đa chiều trong PHP

Trong một mảng đa chiều, mỗi phần tử cũng có thể là một mảng. Và mỗi phần tử trong một mảng phụ có thể là một mảng, và cứ tiếp tục như vậy. Các giá trị trong mảng đa dạng được truy cập bởi sử dụng nhiều chỉ mục.

Ví dụ

Trong ví dụ này, chúng ta tạo một mảng hai chiều để lưu giữ điểm 3 môn học của 3 sinh viên.

Ví dụ này là một mảng đa chiều, bạn có thể tạo một mảng số nguyên theo cách tương tự.

<html>
   <body>
      <?php
         $diemThi = array( 
            "hoang" => array
            (
               "monVatLy" => 7,
               "monToan" => 8,  
               "monHoa" => 9
            ),


            "manh" => array
            (
               "monVatLy" => 7,
               "monToan" => 9,
               "monHoa" => 6
            ),


            "huong" => array
            (
               "monVatLy" => 8,
               "monToan" => 8,
               "monHoa" => 9
            )
         );


         /* truy cập các giá trị của mảng đa chiều */
         echo "Điểm thi môn Vật Lý của hoang là: " ;
         echo $diemThi['hoang']['monVatLy'] . "<br />"; 


         echo "Điểm thi môn Toán của manh là: ";
         echo $diemThi['manh']['monToan'] . "<br />"; 


         echo "Điểm thi môn Hóa của huong là: " ;
         echo $diemThi['huong']['monHoa'] . "<br />";
      ?>

   </body>
</html>

Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả:

PHP - Mảng (Array) 3

Ghi chú − Các hàm xử lý mảng có sẵn được cung cấp trong PHP

Những hàm này cho phép bạn tương tác với và thao tác các mảng (array) theo các cách đa dạng. Mảng (Array) là thiết yếu cho việc lưu giữ, quản lý và hoạt động trên tập hợp các biến.

Cài đặt Không cần thiết bất kỳ cài đặt nào để sử dụng những hàm này, chúng là một phần của PHP Core.

Cấu hình Runtime Extension này không có chỉ thị cấu hình nào được định nghĩa trong php.ini.

Hằng mảng trong PHP Bảng dưới liệt kê các hằng mảng (Array Constanst) trong PHP.

HằngMiêu tả
CASE_LOWERĐược sử dụng với hàm array_change_key_case() để chuyển đổi key của mảng thành chữ thường
CASE_UPPERĐược sử dụng với hàm array_change_key_case() để chuyển đổi key của mảng thành chữ hoa
SORT_ASCĐược sử dụng với hàm array_multisort() để xếp thứ tự tăng dần
SORT_DESCĐược sử dụng với hàm array_multisort() để xếp thứ tự giảm dần
SORT_REGULARĐược sử dụng để so sánh các item theo cách thông thường
SORT_NUMERICĐược sử dụng để so sánh các item về số lượng
SORT_STRINGĐược sử dụng để so sánh các item như là string
SORT_LOCALE_STRINGĐược sử dụng để so sánh các item như là string, dựa trên Locale hiện tại
COUNT_NORMAL
COUNT_RECURSIVE
EXTR_OVERWRITE
EXTR_SKIP
EXTR_PREFIX_SAME
EXTR_PREFIX_ALL
EXTR_PREFIX_INVALID
EXTR_PREFIX_IF_EXISTS
EXTR_IF_EXISTS
EXTR_REFS

Danh sách hàm dùng để xử lý Mảng (Array) trong PHP

Để chạy các ví dụ, bạn sao chép phần PHP code vào phần // Phần PHP code ở dưới đây và sau đó lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả.

<html>
   <head>
      <title>Hàm xử lý mảng trong PHP</title>
   </head>


   <body>


       // Phần PHP code


   </body>


</html>

Cột PHP chỉ phiên bản PHP sớm nhất mà hỗ trợ hàm đó.

HàmMiêu tảPHP
Hàm array()Tạo một mảng3
Hàm array_change_key_case()Trả về một mảng với tất cả key trong dạng chữ hoa hoặc chữ thường4
Hàm array_chunk()Chia một mảng thành một mảng các mảng4
Hàm array_combine()Tạo một mảng bởi sử dụng một mảng cho key và mảng khác cho value5
Hàm array_count_values()Trả về một mảng với số lần xuất hiện mỗi value4
Hàm array_diff()So sánh các value của mảng, và trả về các sự khác nhau4
Hàm array_diff_assoc()So sánh key và value của mảng, và trả về sự khác nhau4
Hàm array_diff_key()So sánh các key của mảng, và trả về các sự khác nhau5
Hàm array_diff_uassoc()So sánh key và value của mảng, với một hàm kiểm tra bổ sung do người dùng tạo, và trả về các sự khác nhau5
Hàm array_diff_ukey()So sánh key của mảng, với một hàm kiểm tra bổ sung do người dùng tạo, và trả về các sự khác nhau5
Hàm array_fill()Điền value vào một mảng4
Hàm array_fill_keys()Điền value vào một mảng, chỉ rõ các key5
Hàm array_filter()Lọc các phần tử của một mảng bởi sử dụng một hàm do người dùng tạo4
Hàm array_flip()Trao đổi tất cả key với value được liên hợp với chúng trong một mảng4
Hàm array_intersect()So sánh các value trong mảng và trả về các so khớp4
Hàm array_intersect_assoc()So sánh các key và value trong mảng và trả về các so khớp4
Hàm array_intersect_key()So sánh các key trong mảng và trả về các so khớp5
Hàm array_intersect_uassoc()So sánh các key và value trong mảng, với một hàm kiểm tra bổ sung do người dùng tạo và trả về các so khớp5
Hàm array_intersect_ukey()So sánh các key trong mảng, với một hàm kiểm tra bổ sung do người dùng tạo và trả về các so khớp5
Hàm array_key_exists()Kiểm tra xem key đã cho có tồn tại trong mảng không4
Hàm array_keys()Trả về tất cả key của một mảng4
Hàm array_map()Gửi mỗi value của một mảng tới một hàm do người dùng tạo, mà trả về các value mới4
Hàm array_merge()Sáp nhập một hoặc nhiều mảng thành một mảng4
Hàm array_merge_recursive()Sáp nhập một hoặc nhiều mảng thành một mảng4
Hàm array_multisort()Sắp xếp các mảng đa chiều4
Hàm array_pad()Chèn số lượng item đã xác định với một value đã xác định vào một mảng4
Hàm array_pop()Xóa phần tử cuối cùng của một mảng4
Hàm array_product()Tính toán tích các value trong một mảng5
Hàm array_push()Chèn một hoặc nhiều phần tử vào phần cuối của một mảng4
Hàm array_rand()Trả về một hoặc nhiều key ngẫu nhiên từ một mảng4
Hàm array_reduce()Trả về một mảng ở dạng string, sử dụng hàm do người dùng tạo4
Hàm array_reverse()Trả về một mảng với thứ tự bị đảo ngược4
Hàm array_search()Tìm kiếm một mảng cho một value đã cho và trả về key4
Hàm array_shift()Gỡ bỏ phần tử đầu tiên từ một mảng, và trả về value của phần tử bị gỡ bỏ4
Hàm array_slice()Trả về các phần đã chọn của một mảng4
Hàm array_splice()Gỡ bỏ và thay thế các phần tử đã xác định của một mảng4
Hàm array_sum()Trả về tổng các value trong một mảng4
Hàm array_udiff()So sánh các value của mảng trong một hàm do người dùng tạo và trả về một mảng5
Hàm array_udiff_assoc()So sánh các key của mảng, và so sánh các value của mảng trong một hàm do người dùng tạo, và trả về một mảng5
Hàm array_udiff_uassoc()So sánh các key và value của mảng trong một hàm do người dùng tạo, và trả về một mảng5
Hàm array_uintersect()So sánh các value của mảng trong một hàm do người dùng tạo, và trả về một mảng5
Hàm array_uintersect_assoc()So sánh các key của mảng, và so sánh các value của mảng trong một hàm do người dùng tạo, và trả về một mảng5
Hàm array_uintersect_uassoc()So sánh các value của mảng trong một hàm do người dùng tạo, và trả về một mảng5
Hàm array_unique()Gỡ bỏ bản sao các value từ một mảng4
Hàm array_unshift()Thêm một hoặc nhiều phần tử tới phần đầu của mảng4
Hàm array_values()Trả về tất cả value của một mảng4
Hàm array_walk()Áp dụng một hàm do người dùng tạo tới mỗi thành viên của một mảng3
Hàm array_walk_recursive()Áp dụng một hàm một cách đệ qui do người dùng tạo tới mỗi thành viên của một mảng5
Hàm arsort()Sắp xếp một mảng với thứ tự đảo ngược và duy trì liên kết chỉ mục3
Hàm asort()Sắp xếp một mảng và duy trì liên kết chỉ mục3
Hàm compact()Tạo một mảng chứa các biến và các value của chúng4
Hàm count()Đếm các phần tử trong một mảng, hoặc các thuộc tính trong một đối tượng3
Hàm current()Trả về phần tử hiện tại trong một mảng3
Hàm each()Trả về cặp key và value hiện tại từ một mảng3
Hàm end()Thiết lập con trỏ nội bộ của một mảng tới phần tử cuối cùng của nó3
Hàm extract()Nhập các biến vào trong bảng biểu tượng hiện tại từ một mảng3
Hàm in_array()Kiểm tra nếu một value đã xác định là tồn tại trong một mảng4
Hàm key()Lấy một key từ một mảng3
Hàm krsort()Sắp xếp một mảng bằng các key theo thứ tự đảo ngược3
Hàm ksort()Sắp xếp một mảng bằng các key3
Hàm list()Gán các biến như nếu chúng là một mảng3
Hàm natcasesort()Sắp xếp một mảng bởi sử dụng một thuật toán "natural order" không phân biệt kiểu chữ4
Hàm natsort()Sắp xếp một mảng bởi sử dụng một thuật toán "natural order"4
Hàm next()Tăng con trỏ mảng nội bộ hay trỏ tới phần tử kế tiếp của một mảng3
Hàm pos()Alias của hàm current()3
Hàm prev()Giảm con trỏ mảng nội bộ hay trỏ tới phần tử ở trước của một mảng3
Hàm range()Tạo một mảng chứa một phạm vi phần tử3
Hàm reset()Thiết lập con trỏ nội bộ của mảng về phần tử đầu tiên của nó3
Hàm rsort()Sắp xếp một mảng theo thứ tự đảo ngược3
Hàm shuffle()Xáo trộn một mảng3
Hàm sizeof()Alias của hàm count()3
Hàm sort()Sắp xếp một mảng3
Hàm uasort()Sắp xếp một mảng với một hàm do người dùng tạo và duy trì liên kết chỉ mục3
Hàm uksort()Sắp xếp một mảng bằng các key bởi sử dụng một hàm do người dùng tạo3
Hàm usort()Sắp xếp một mảng bằng các value bởi sử dụng một hàm do người dùng tạo3

Bình luận