Ở bài kiểu dữ liệu chúng ta cũng đã được giới thiệu qua về mảng là một kiểu dữ liệu thường gặp trong PHP. Vậy thì ở bài này chúng ta sẽ tìm hiểu sâu hơn về mảng cũng như cách sử dụng chúng. Nào, bắt đầu thôi.

Cú pháp

Để khai báo một mảng chúng ta sử dụng cấu trúc Array(). Dữ liệu trong mảng được định nghĩa bởi một cặp key => value. Các cặp key => value được phân tách bới dấu phẩy ( , ). Bắt đầu từ phiên bản PHP 5.4 bạn có thể thay thế Array() bằng [ ].

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

Ví dụ


$sinhvien = array(
    "sv1" => "tuy",
    "sv2" => "huy",
     "sv3" => "cuong",
);
var_dump($sinhvien);exit;
?>

Một cú pháp khác


$sinhvien = [
    "sv1" => "tuy",
    "sv2" => "huy",
     "sv3" => "cuong",
];
var_dump($sinhvien);exit;
?>

Kết quả thu được

array(3) {
  ["sv1"]=>
  string(3) "tuy"
  ["sv2"]=>
  string(3) "huy"
  ["sv3"]=>
  string(5) "cuong"
}

Khi bạn khai báo một mảng chỉ bao gồm các trường value mà không có key. Các key sẽ tự động được gán khi bạn khởi tạo mảng. ví dụ như


$sinhvien = array(
 "tuy",
 "huy",
 "cuong"
);
var_dump($sinhvien);exit;
?>

Và đây là kết quả

array(3) {
  [0]=>
  string(3) "tuy"
  [1]=>
  string(3) "huy"
  [2]=>
  string(5) "cuong"
}

 

Các loại mảng trong PHP

Mảng số nguyên 

Mảng số nguyên là mảng có các chỉ mục được định nghĩa là các số nguyên. Chỉ mục có thể được chỉ định tự động (chỉ mục luôn bắt đầu từ 0) hoặc được định nghĩa theo cách thủ công

Ví dụ

Như các ví dụ trước mình sẽ tạo một mảng sinh viên và in ra tên của 3 sinh viên bằng cách truy xuất từ các chỉ mục.


$sinhvien = [
    'tuy','huy','cuong'
];

echo "sinh vien 1 ".$sinhvien[0]."\n";
echo "sinh vien 2 ".$sinhvien[1]."\n";
echo "sinh vien 3 ".$sinhvien[2]."\n";

?>

kết quả

sinh vien 1 tuy
sinh vien 2 huy
sinh vien 3 cuong

Các bạn có thể thấy chỉ mục sẽ được tự sinh bắt đầu từ [0] gán cho dữ liệu theo thứ tự mà bạn ghi vào mảng. Bạn cũng có thể khởi tạo mảng thủ công bằng cánh gọi mảng theo chỉ mục và gán dữ liệu cho chúng.

 

Mảng liên hợp

Mảng liên hợp là mảng sử dụng các key mà chính bạn định nghĩa cho chúng. Các key có thể là số hoặc chuỗi ký tự. Cách sử dụng của mảng liên hợp tương đối giống với mảng số nguyên

Ví dụ

Trong ví dụ này mình sẽ sử dụng tên làm key và dữ liệu là ngày sinh của mỗi người.


$ngaysinh = [
    'tuy'=>'08/02',
    'huy'=>'16/06',
    'cuong'=>'21/03'
];

echo 'ngay sinh '.$ngaysinh['tuy'];

?>

Mình sẽ in ra ngày sinh sử dụng key là tên của người mình muốn in.

kết quả

ngay sinh 08/02

 

Mảng đa chiều

Mảng đa chiều là mảng chứa một hoặc nhiều mảng con khác. Tức là mỗi phần tử của một mảng có thể là một mảng khác. Các giá trị trong mảng đa chiều cũng được truy xuất bằng các chỉ mục tuy nhiên số chỉ mục cần để truy xuất đến giá trị là tùy thuộc vào độ sâu của mảng.

Ví dụ

Với ví dụ mình sẽ khai báo mảng 2 chiều lưu thông tin của sinh viên như họ tên, lớp học, ngày sinh ...


// Your code here!
$sinhvien = array(
    'tuy'=>array(
        'lop'=>'61PM1',
        'ngaysinh'=>'08/02',
        'namsinh'=>'1998'
        ),
    'huy'=>array(
        'lop'=>'61PM2',
        'ngaysinh'=>'16/06',
        'namsinh'=>'1998'
        ),
    'cuong'=>array(
        'lop'=>'61PM3',
        'ngaysinh'=>'21/03',
        'namsinh'=>'1998'
        )
    );
?>

Để in ra các thông tin của sinh viên mình cần sử dụng 2 chỉ mục.


echo "thong tin cua sinh vien Tuy \n";
    echo "lop: ".$sinhvien['tuy']['lop']."\n";
    echo "ngay sinh: ".$sinhvien['tuy']['ngaysinh']."\n";
    echo "nap sinh: ".$sinhvien['tuy']['namsinh']."\n";
?>

Kết quả

thong tin cua sinh vien Tuy 
lop: 61PM1
ngay sinh: 08/02
nap sinh: 1998

PHP hỗ trợ mảng đa chiều có độ sâu hai, ba, bốn hoặc lớn hơn. Tuy nhiên việc quản lí các mảng đa chiều có độ sâu lớn hơn ba là tương đối rắc rối.

Kết bài

Qua bài này mình đã giới thiệu cho các bạn về các loại mảng được sử dụng trong PHP và cách sử dụng chúng. Mọi thắc mắc và góp ý về bài viết xin hãy để lại comment cho mình nhé :))