Search…

Kiểu Dữ Liệu Mảng Trong PHP

06/09/20206 min read
Tìm hiểu về kiểu dữ liệu và các phương thức về mảng trong PHP.

Mảng

Mảng là một biến danh sách chứa nhiều phần tử có kiểu dữ liệu chữ hoặc số. Trong PHP, có thể tạo ra một mảng không đồng nhất về mặt kiểu dữ liệu.

Trong PHP có 3 loại mảng:

  • Indexed arrays: Mảng với giá trị key mặc định là số nguyên.
  • Associative arrays: Mảng với giá trị key được đặt tên và là một chuỗi
  • Multidimensional arrays: Mảng mà các phần tử trong mảng là một mảng.

Tôi sẽ phân tích rõ hơn về các loại mảng ở phần dưới.

Indexed arrays

Cú pháp:

$variable = array($value_1, $value_2, $value_3, ...);

Ví dụ:

$knowledge = array("PHP", "Cpp", "Java" );

Phân tích:

  • knowledge: Tên của mảng.
  • $knowledge[0] = "PHP": Giá trị 0 ở đây chính là giá trị của key. Vì đây là mảng Indexed arrays nên giá trị key mặc định có mang giá trị lần lượt bắt đầu từ 0 -> count($knowledge)-1 (Xem thêm ở mục Hàm count()).

Associative arrays

Cú pháp: $variable = array( key_1=> $value, key_2=> $value, …);

Ví dụ:

$knowledge = array("PHP"   =>   "knowledge_1",
                 "Cpp"   =>   "knowledge_2",
                 "Java" =>   "knowledge_3" );

Phân tích:

$knowledge[PHP] = "knowledge_1" : key ở đây là "PHP" và là một chuỗi.

Multidimensional arrays

Cú pháp:

$variable = array( $array_1,  $array_2,  $array_3, ... );

Ví dụ:

$knowledge= array(array("PHP",1,2),
                array("Cpp",3,4),
                array("Java",5,6));

Phân tích, ở trên đã khởi tạo một mảng 2 chiều:

  • $knowledge[0][1] = "PHP";
  • $knowledge[1][1] = 3;
  • $knowledge[2][2] = 6;

Các hàm xử lí và thao tác trên mảng

Thêm, xoá các phần tử trong mảng

Thêm phần tử vào trong một mảng

$author= array(); // khai báo một mảng có tên là author

// Thêm các phần tử với mảng indexed arrays
// với các key lần lượt ở dưới là 0, 1 và 2
$author[] = "TrucLinh";
$author[] = "DaiNguyen";
$author[] = "TieuNguyen";

// Thêm các phần tử với mảng associative arrays
// với các key lần lượt ở dưới là "author_1", "author_2" và "author_3"
$author["author_1"] = "TrucLinh";
$author["author_2"] = "DaiNguyen";
$author["author_3"] = "TieuNguyen";

Xóa phần tử vào trong một mảng

Để xóa một phần tử trong mảng, sử dụng phương thức unset()

$knowledge = array("PHP"     =>   "knowledge_1",
                 "Cpp"     =>   "knowledge_2",
                 "Java"   =>   "knowledge_3" );

unset($knowledge["Java"]);

//Kết quả sau khi unset(): [PHP] => "knowledge_1", [Cpp] => "knowledge_2"

Hàm count()

Cú pháp: count($array)

Hàm count() được dùng để trả về độ dài hay số phần tử trong mảng.

Ví dụ:

$knowledge = array("PHP", "Cpp", "Java" );

echo count($knowledge);
//Kết quả: 3

Duyệt mảng

Để có thể lặp qua các giá trị phần tử trong mảng Indexed arrays với mục đích nào đó như: in ra màn hình, sử dụng để tính toán, thay đổi,... Có thể sử dụng vòng lặp for như sau:

$knowledge = array("PHP", "Cpp", "Java" );
$arrlenght = count($knowledge);

for($i = 0; $i < $arrlength; $i++){
    echo $knowledge[$i];
    echo "<br>";
}

/* Kết quả:
PHP
Cpp
Java
*/

Tương tự như ở mảng Associative arrays, có thể sử dụng vòng lặp foreach như sau:

$ageknowledge = array("PHP"   =>  "30",
                    "Cpp"   =>  "25",
                    "Java" =>  "20" );

foreach($ageknowledgeas $i => $i_value){
    echo "Name: " . $i . ", age: " . $i_value;
    echo "<br>";
}

/* Kết quả:
Name: PHP, age: 30
Name: Cpp, age: 25
Name: Java, age: 20
*/

Hàm in_array()

Cú pháp: in_array( $value,  $array)

Là phương thức tìm một giá trị có trong mảng.

Trong đó:

  • $value: Là giá trị cần tìm.
  • $array:  Là mảng bị tìm kiếm.

Kết quả trả về của phương thức sẽ là TRUE nếu giá trị đó tồn tại trong mảng. Và ngược lại sẽ là FALSE nếu giá trị đó không tồn tại trong mảng.

Ví dụ:

$knowledge = array("PHP", "Cpp", "Java" );
var_dump(in_array("PHP", $knowledge)); // TRUE

Hàm array_change_key_case()

Cú pháp: array_change_key_case( $array, $case)

Trả về một mảng, trong đó chuyển tất cả các key trong mảng array sang chữ hoa nếu $case=CASE_UPPER ($case=1) và sang chữ thường nếu $case=CASE_LOWER ($case=0).

Ví dụ:

$knowledge = array("PHP", "Cpp", "Java" );

print_r(array_change_key_case($knowledge,CASE_UPPER));
//Kết quả: [0] => PHP, [1] => Cpp, [3] => Java

Hàm array_keys()

Cú pháp: array_combine( $array_key,  $array_values)

Trộn 2 mảng $array_keys$array_values thành một mảng với:

  • $array_keys: Là danh sách keys,
  • $array_value: Là danh sách values tương ứng với key.

Chú ý: Điều kiện là 2 mảng này phải bằng nhau.

Ví dụ:

$array_keys = array("PHP", "Cpp", "Java");
$array_values = array("knowledge_1", "knowledge_2", "knowledge_3");

print_r(array_combine($array_keys, $array_values));
//Kết quả: [PHP] => knowledge_1, [Cpp] => knowledge_2, [Java] => knowledge_3

Hàm array_push()

Cú pháp: array_push( $array, $value_1, $value_2, $value_3, …)

Thêm vào cuối mảng $array một hoặc nhiều phần tử với các giá trị tương ứng $value_1, $value_2, $value_3, …

Ví dụ:

$knowledge = array("PHP", "Cpp", "Java");
array_push($knowledge, "DatTruong", "RyanLe");

print_r($knowledge);
//Kết quả: [0] => PHP, [1] => Cpp, [2] => Java, [3] => DatTruong, [4] => RyanLe;

Hàm array_pop()

Cú pháp: array_pop( $array)

Xoá phần tử ở cuối mảng và trả về phần tử mới bị xóa. Nếu mảng rỗng hoặc không phải mảng, trả về NULL.

Ví dụ:

$knowledge = array("PHP", "Cpp", "Java");

echo array_pop($knowledge);
//Kết quả: Java

Hàm array_unshift()

Cú pháp: array_unshift( $array, $value_1, $value_2, $value_3, …)

Thêm các giá trị $value_1, $value_2, $value_3, … vào đầu mảng $array.

Ví dụ:

$knowledge = array("PHP", "Cpp", "Java");
array_unshift($knowledge, "DatTruong", "RyanLe");

print_r($knowledge);
//Kết quả: [0] => DatTruong, [1] => RyanLe, [2] => PHP, [3] => Cpp, [4] => Java

Hàm array_shift()

Cú pháp: array_shift( $array)

Xóa phần tử đầu tiên ra khỏi mảng và trả về phần tử vừa xóa đó.

Ví dụ:

$knowledge = array("PHP", "Cpp", "Java");
$knowledge_1 = array_shift($knowledge);

print_r($knowledge);
/* 
Kết quả biến $knowledge: [0] => Cpp, [1] => Java
Kết quả biến $knowledge_1: PHP
*/

Hàm array_count_values()

Cú pháp: array_count_values($array)

Đếm số lần xuất hiện của các phần tử giống nhau trong mảng $array và trả về một mảng.

Ví dụ:

$knowledge = array("PHP", "Cpp", "Java", "Cpp", "PHP", "PHP", "DatTruong", "RyanLe");

print_r(array_count_values($knowledge));
//Kết quả là: [PHP] => 3, [Cpp] => 2, [Java] => 1; [DatTruong] => 1, [RyanLe] => 1

Hàm is_array()

Cú pháp: is_array( $variable)

Kiểm tra một biến có phải kiểu mảng hay không? Kết quả trả về TRUE nếu phải và FALSE nếu không phải.

Ví dụ:

$knowledge = array();
var_dump($knowledge); // Kết quả trả về TRUE
$author = "";
var_dump($author); // Kết quả trả về FALSE

Hàm array_key_exists()

Cú pháp: array_key_exists( $key, $array)

Kiểm tra key $key có tồn tại trong mảng $array không? Trả về TRUE nếu có và FALSE nếu không có.

Ví dụ:

$knowledge = array("PHP"=>"knowledge_1",
                 "Cpp"=>"knowledge_2",
                 "Java"=>"knowledge_3" );
 
var_dump(array_key_exists("PHP", $knowledge)); // Kết quả trả về TRUE
var_dump(array_key_exists("RyanLe", $knowledge)); // Kết quả trả về FALSE

Hàm array_unique()

Cú pháp: array_unique($array)

Loại bỏ các phần từ có giá trị giống nhau trong mảng $array.

Ví dụ:

$knowledge = array("PHP", "Cpp", "Java", "Cpp", "PHP", "PHP", "DatTruong", "RyanLe");
$result = array_unique($knowledge);

var_dump($result);
//Kết quả: [0] => PHP, [1] => Cpp, [2] => Java; [3] => DatTruong, [4] => RyanLe

Hàm array_values()

Cú pháp: array_values($array)

Chuyển mảng $array sang dạng mảng Indexed arrays.

Ví dụ:

$knowledge = array("PHP"   =>   "knowledge_1",
                 "Cpp"   =>   "knowledge_2",
                 "Java" =>   "knowledge_3" );
 
var_dump(array_values($knowledge));
//Kêt quả: [0] => knowledge_1, [1] => knowledge_2, [2] => knowledge_3

Tổng kết

Bài viết này giới thiệu về kiểu dữ liệu mảng trong PHP cũng như các ví dụ về các hàm xử lý. Hiểu rõ về mảng và sự sắp xếp đồng bộ các phần tử sẽ hữu ích trong các ứng dụng lớn.

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024