Web Cơ Bản

Cách khai báo, sử dụng Mảng (Array) trong PHP

Mảng là gì ?

- Mảng (array) được xem là một loại biến đặc biệt, nó có thể lưu trữ “nhiều giá trị” cùng một lúc.

- Giả sử bạn có một số cái điện thoại, đối với trước khi tìm hiểu bài Mảng thì bạn sẽ dùng từng biến để lưu trữ giá trị của từng cái điện thoại (như đoạn mã bên dưới)

<?php
	$mobile_01 = "HTC";
	$mobile_02 = "Nokia";
	$mobile_03 = "SungSung";
	$mobile_04 = "LG";
	$mobile_05 = "Blackberry";
?>

- Tuy nhiên, với việc sử dụng Mảng thì ta có thể lưu cả năm cái điện thoại vào chung một biến.

<?php
	$mobile = array("HTC", "Nokia", "SungSung", "LG", "Blackberry");
?>

- Lưu ý: Mỗi giá trị của mảng sẽ tương ứng với một phần tử (còn được gọi là “phần tử mảng”), mỗi phần tử mảng sẽ được xác định bởi một chỉ số (đối với mảng được lập chỉ mục) hoặc khóa (đối với mảng kết hợp)

- Bảng bên dưới minh họa cho cấu trúc của mảng $mobile.

Phần tử 1 Phần tử 2 Phần tử 3 Phần tử 4 Phần tử 5
Chỉ số 0 1 2 3 4
Giá trị HTC Nokia SamSung LG Blackberry

Các loại mảng trong PHP

- Trong PHP, mảng được chia ra làm ba loại chính:

  • Mảng được lập chỉ mục (Indexed array)
  • Mảng kết hợp (Associative array)
  • Mảng đa chiều (Multidimensional array)

Mảng được lập chỉ mục

- Mảng được lập chỉ mục (Indexed array) là loại mảng mà trong đó các “phần tử mảng” được xác định dựa trên các chỉ số (điển hình, mảng $mobile ở ví dụ phía trên là một mảng được lập chỉ mục)

- Để tạo (khai báo) một “mảng được lập chỉ mục” thì ta sử dụng cú pháp như sau:

$TênMảng = array(
	giá trị của phần tử mảng thứ nhất,
	giá trị của phần tử mảng thứ hai,
	giá trị của phần tử mảng thứ ba //Lưu ý: KHÔNG được thêm “dấu phẩy” phía sau phần tử mảng cuối cùng
);

- Để truy cập, lấy giá trị của một “phần tử mảng” từ một “mảng được lập chỉ mục” thì ta dùng cú pháp:

$TênMảng[chỉ số của phần tử mảng]

- Lưu ý: Cách xác định “chỉ số” của phần tử mảng sẽ là số thứ tự của phần tử mảng - 1

<?php
	$mobile = array("HTC", "Nokia", "SungSung", "LG", "Blackberry");
	echo "Giá trị của phần tử mảng thứ 3 là: " . $mobile[2];
?>

Mảng kết hợp

- Mảng kết hợp (Associative array) là loại mảng mà trong đó các “phần tử mảng” được xác định dựa trên tên khóa.

- Để tạo (khai báo) một “mảng kết hợp” thì ta dùng cú pháp như sau:

$TênMảng = array(
	tên khóa => giá trị của phần tử mảng,
	tên khóa => giá trị của phần tử mảng,
	tên khóa => giá trị của phần tử mảng
);

- Để truy cập, lấy giá trị của một “phần tử mảng” từ một “mảng kết hợp” thì ta sử dụng cú pháp:

$TênMảng[tên khóa]
<?php
	$big_tech = array(
		'search' => 'Google',
		'video' => 'Youtube',
		'social' => 'Facebook',
		'software' => 'Microsoft'
	);
	echo "Ông lớn về lĩnh vực phần mềm là: " . $big_tech['software'];
?>

Mảng đa chiều

- Mảng đa chiều (Multidimensional array) là loại mảng mà trong đó “giá trị của các phần tử mảng” lại chính là một mảng khác.

- Tùy thuộc vào số cấp (số bậc) mà mảng sẽ có số chiều tương ứng (ví dụ như mảng hai chiều, mảng ba chiều, . . .)

- Lưu ý: Giá trị của một phần tử mảng thuộc loại “mảng kết hợp” không nhất thiết phải là một “mảng kết hợp”, nó có thể là một “mảng được lập chỉ mục”, điều đó cũng tương tự đối với “mảng được lập chỉ mục”.

- Mảng $profile bên dưới là một mảng ba chiều (vì nó có ba cấp)

<?php
	$profile = array(
		'name' => 'Nguyễn Thành Nhân',
		'year' => 1993,
		'hobbies' => array(
			'xem phim',
			'nghe nhạc',
			'chăm sóc cây cảnh',
			array(
				'game_1' => 'GTA 5',
				'game_2' => 'Võ Lâm Truyền Kỳ'
			)
		),
		'city' => 'Cần Thơ'
	);
?>

- Để truy cập, lấy giá trị của một “phần tử mảng” từ một “mảng đa chiều” thì ta truy cập lần lượt từ bậc 1 đến bậc của phần tử mảng cần lấy.

<?php
	echo $profile['name'];
	echo $profile['hobbies'][1];
	echo $profile['hobbies'][3]['game_2'];
?>

Cập nhật giá trị của phần tử mảng

- Dưới đây là hai cú pháp dùng để cập nhật (chỉnh sửa) giá trị của phần tử mảng.

$TênMảng[chỉ số] = giá trị mới; //dành cho mảng được lập chỉ mục
$TênMảng[tên khóa] = giá trị mới; //dành cho mảng kết hợp
<?php
	echo "<h2>Cập nhật giá trị của mảng được lập chỉ mục</h2>";
	$mobile = array("HTC", "Nokia", "SungSung", "LG", "Blackberry");
	echo "<p>- Trước khi chỉnh sửa: " . $mobile[2] . "</p>";
	$mobile[2] = "Apple";
	echo "<p>- Sau khi chỉnh sửa: " . $mobile[2] . "</p>";

	echo "<h2>Cập nhật giá trị của mảng kết hợp</h2>";
	$big_tech = array('search' => 'Google', 'video' => 'Youtube', 'social' => 'Facebook', 'software' => 'Microsoft');
	echo "<p>- Trước khi chỉnh sửa: " . $big_tech['social'] . "</p>";
	$big_tech['social'] = "Instagram";
	echo "<p>- Sau khi chỉnh sửa: " . $big_tech['social'] . "</p>";
?>

Xem cấu trúc của mảng

- Trong PHP, lệnh print_r() dùng để xuất ra một mảng, nó sẽ cho chúng ta thấy rõ cấu trúc của mảng.

print_r($profile);