So sánh mảng hai chiều trong php

Array là một cấu trúc dữ liệu lưu trữ một hoặc nhiều loại giá trị tương tự trong một giá trị duy nhất. Ví dụ: nếu bạn muốn lưu trữ 100 số thì thay vì xác định 100 biến dễ dàng để xác định một mảng có độ dài 100. Tìm hiểu về Mảng (Array) trong PHP sẽ giúp các bạn tạo ra một mảng, công việc code sẽ trở nên dễ dàng và đơn giản hơn. Chúc các bạn thành công!

Trong phần trước, bạn đã học về kiểu dữ liệu mảng trong PHP cũng như cách tạo, truy xuất, duyệt, xóa, thêm các phần tử trong mảng. Trong bài này, bạn sẽ học về mảng đa chiều, một trong những kiểu dữ liệu làm nên tên tuổi của PHP trong thế giới lập trình Web.

Mảng đa chiều là mảng chứa một hoặc nhiều chiều (mảng con). Trong bài trước, bạn đã hiểu 1 mảng là kiểu dữ liệu chứa nhiều phần tử theo thứ tự liên tiếp nhau. Nếu một mảng có các phần tử chứa các mảng con, mỗi phần tử mảng con lại chứa mảng con nữa… thì bạn có thể gọi đây là mảng đa chiều.

Bạn có thể tạo mảng nhiều chiều bao nhiêu tùy ý, tuy nhiên theo DAMMIO.COM bạn chỉ nên tạo mảng tối đa 3 để có thể quản lý dễ dàng.

Mảng hai chiều

Trước hết, bạn hãy làm quen với mảng 2 chiều, chúng ta có một bảng chứa dữ liệu như sau.

Tên Tuổi Điểm Dammio 22 9 Lan 25 8 Vy 18 5 Hoa 17 10 Để lưu trữ bảng này, bạn có thể dùng mảng 2 chiều như sau với tên mảng là $student.

Trong ví dụ trên để truy xuất 1 phần tử, bạn có thể tìm vị trí phần tử chính trong mảng sau đó là tìm vị trí phần tử con trong mảng phụ. Ví dụ $students[1][1] là tìm sinh viên ở vị trí 1 và tìm thông tin của sinh viên ở vị trí 1.

Bạn có thể sử dụng 2 vòng lặp (for hoặc foreach) để duyệt mảng 2 chiều trên như sau.

Số dòng $row

"; echo "
    "; for ($col = 0; $col < 3; $col++) {
    echo "
  • ".$students[$row][$col]."
  • ";
    } echo "
"; } foreach($students as $item) { echo "

Sinh viên

"; echo "
    "; foreach($item as $value) {
    echo "
  • ".$value."
  • ";
    } echo "
"; } ?> Nếu mỗi sinh viên trong ví dụ trên có 2 cột điểm thì bạn có thể tạo mảng 3 chiều như sau.

Về cách duyệt vòng for/foreach thì cũng tương tự như mảng 2 chiều.

Kết luận

Nếu bạn tinh ý, mảng đa chiều trong PHP có thể áp dụng cho các bảng cơ sở dữ liệu hoặc kiểu dữ liệu lớp, đối tượng nào đó. Vì vậy đây là lý do mảng đa chiều trong PHP là kiểu dữ liệu rất mạnh và rất thú vị.

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. Nói đơn giản thì mảng như các dòng xe ô tô, từng dòng xe mang từng giá trị riêng (value) và được đánh số bằng thứ tự phổ biến trên thị trường (key).

2. Cú pháp

Để tạo mảng chúng ta sử dụng hàm


4 trong PHP (Từ PHP 5.4 trở lên bạn chỉ cần viết giá trị trong cặp dấu [ ] cũng được)

array(
    key  => value,
    key2 => value2,
    key3 => value3,
    ...
)

Ví dụ:


Kết quả bạn có như sau:

array(3) {
    [0]=> string(5) "Volvo"
    [1]=> string(3) "BMW"
    [2]=> string(6) "Toyota"
}

Như ví dụ trên chúng ta có mảng 3 giá trị. Trong đó nó có 3 key đánh số từ [0] đến [2] cho 3 giá trị (dòng xe) tương ứng. Mỗi giá trị bên trong nó sẽ hiển thị kèm theo tên kiểu dữ liệu. Như vậy bạn có thể hiểu, Volvo, BMW, Toyota là giá trị trong mảng


5 mà ta


6 ra. Các key nó sẽ tự động gán khi khởi tạo mảng. Để lấy giá trị trong mảng như ý muốn của mình, chúng ta sẽ lấy ra bằng cách viết tên biến kèm theo key cần lấy giá trị như sau:


3. Các loại mảng

3.1. 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. VD:


KQ:

    Giá trị phần tử mảng là 1 
    Giá trị phần tử mảng là 2 
    Giá trị phần tử mảng là 3 
    Giá trị phần tử mảng là 4 
    Giá trị phần tử mảng là 5 
    Giá trị phần tử mảng là Volvo 
    Giá trị phần tử mảng là BMW 
    Giá trị phần tử mảng là Toyota 
    Giá trị phần tử mảng là Mazda 
    Giá trị phần tử mảng là Kia

3.2. 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. 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


7 và


8.

VD:

 3, "bmw" => 2, "toyota" => 1);
     echo "Mức độ phổ biến của Volvo là ". $dong_xe['volvo']. "";
     echo "Mức độ phổ biến của BMW là ".  $dong_xe['bmw']. "";
     echo "Mức độ phổ biến của Toyota là ".  $dong_xe['toyota']. "";
     /* Phương thức thứ hai để tạo mảng liên hợp. */
     $dong_xe['volvo'] = "low";
     $dong_xe['bmw'] = "medium";
     $dong_xe['toyota'] = "high";
     echo "Mức độ phổ biến của Volvo là ". $dong_xe['volvo'] . "";
     echo "Mức độ phổ biến của BMW là ".  $dong_xe['bmw']. "";
     echo "Mức độ phổ biến của Toyota là ".  $dong_xe['toyota']. "";
?>

Kq:

    Mức độ phổ biến của Volvo là 3
    Mức độ phổ biến của BMW là 2
    Mức độ phổ biến của Toyota là 1
    Mức độ phổ biến của Volvo là low
    Mức độ phổ biến của BMW là medium
    Mức độ phổ biến của Toyota là high

3.3. 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 có nghĩa là 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. VD:

 array
    (
        "mausac" => 7,
        "kieudang" => 8,  
        "tocdo" => 9
    ),
    "bmw" => array
    (
        "mausac" => 7,
        "kieudang" => 9,
        "tocdo" => 6
    ),
    "toyota" => array
    (
        "mausac" => 8,
        "kieudang" => 8,
        "tocdo" => 9
    )
);
    /* truy cập các giá trị của mảng đa chiều */
    echo "Điểm đánh giá màu sắc của Volvo là: " ;
    echo $diemdanhgia['volvo']['mausac'] . ""; 
    echo "Điểm đánh giá kiểu dáng của BMW là: ";
    echo $diemdanhgia['bmw']['kieudang'] . ""; 
    echo "Điểm đánh giá tốc độ của Toyotalà: " ;
    echo $diemdanhgia['toyota']['tocdo'] . "";
?>

KQ:

    Điểm đánh giá màu sắc của Volvo là: 7
    Điểm đánh giá kiểu dáng của BMW là: 9
    Điểm đánh giá tốc độ của Toyotalà: 9

4. Phép lặp trong mảng

4.1. Phép lặp mảng tuần tự:

Cú pháp:


0

Trong đó


9 là mảng mà ta muốn thực thi việc lặp dữ liệu,

array(3) {
    [0]=> string(5) "Volvo"
    [1]=> string(3) "BMW"
    [2]=> string(6) "Toyota"
}

2 là một biến vốn tạm thời chứa mỗi khóa, và

array(3) {
    [0]=> string(5) "Volvo"
    [1]=> string(3) "BMW"
    [2]=> string(6) "Toyota"
}

3 là một biến vốn tạm thời chữa mỗi giá trị. Ví dụ: