Kết nối

[PHP] Phần 15: Mảng trong PHP

360 lượt xem 
 Cập nhật lần cuối: 22/01/2019 lúc 12:20:53
Thể loại: Lập trình Web với PHP 

Mảng là gì?

Trong PHP, mảng là một biến đặc biệt, là một kiểu dữ liệu có thể lưu trữ nhiều phần tử chứa giá trị một lúc. Ví dụ một biến mảng names lưu trữ 3 giá trị là “dammio”, “BVN” và “oimmad”.

<?php
$names = array("dammio", "BVN", "oimmad");
echo "Xin chào " . $names[0] . ", " . $names[1] . " và " . $names[2] . ".";
?>

Trong ví dụ trên, bạn tạo mảng bằng phương thức array() và truy xuất các phần tử mảng theo kiểu $names[0], $names[1],… với vị trí phần tử index đầu tiên của mảng là 0.

Cách tạo mảng

Trong PHP, để tạo mảng bạn có thể dùng hàm array(). Có 3 loại mảng bạn cần chú ý:

  • Mảng index: Mảng với khóa (chỉ mục) là kiểu int
  • Mảng liên kết: Mảng với khóa là kiểu string (theo tên khóa)
  • Mảng đa chiều: Mảng chứa nhiều mảng con bên trong, cho phép tạo mảng nhiều chiều

Mảng index

Mảng index là mảng chứa khóa là kiểu int, vì vậy vị trí khóa đầu tiên luôn bắt đầu là 0.

<?php
$names = array("dammio", "BVN", "oimmad");
?>

Hoặc bạn có thể tạo mảng bằng tay như sau:

<?php
$names[0] = "dammio";
$names[1] = "BVN";
$names[2] = "oimmad";
?>

Để lấy giá trị dữ liệu trong mảng, bạn có thể truy cập theo vị trí index trên biến mảng ($names).

<?php
$names = array("dammio", "BVN", "oimmad");
echo $names[0] . "<br />"; // xuất giá trị phần tử đầu tiên, vị trí 0 --- dammio.com
echo $names[1] . "<br />"; 
echo $names[2] . "<br />";
?>

Đếm số phần tử trong mảng

Với một mảng bất kỳ, để đếm số phần tử hoặc xem chiều dài mảng, bạn chỉ cần dùng hàm count().

<?php
$names = array("dammio", "BVN", "oimmad");
echo count($names); // giá trị trả về là 3, vì mảng có 3 phần tử
?>

Duyệt mảng

Thay vì truy xuất giá trị phần tử mảng theo vị trí, bạn có thể dùng một vòng lặp để duyệt và hiển thị tất cả các phần tử mảng.

<?php
$names = array("dammio", "BVN", "oimmad");
$arrlength = count($names); // đếm số phần tử trong mảng --- dammio.com

for($x = 0; $x < $arrlength; $x++) {
    echo $names[$x];
    echo "<br />";
}

// Kết quả
// dammio
// BVN
// oimmad
?>

Ngoài cách duyệt mảng bằng vòng for, bạn có thể duyệt mảng bằng foreach như sau.

<?php
$names = array("dammio", "BVN", "oimmad");

foreach($names as $value) {
    echo $value;
    echo "<br />";
}

?>

Nếu bạn muốn hiển thị cả chỉ số index cho từng phần tử kèm theo giá trị thì làm như sau.

<?php
$names = array("dammio", "BVN", "oimmad");

foreach($names as $key => $value) {
    echo "Phần tử vị trí [". $key . "] có giá trị : " . $value;
    echo "<br />";
}

?>

Mảng liên kết

Mảng liên kết là mảng cho phép bạn dùng vị trí khóa (thay vì dùng kiểu int) là một tên bất kỳ bạn thích. Theo cách này, mảng của bạn có tính mềm dẻo hơn, có thể chứa bất kỳ giá trị nào bạn muốn.

<?php
$names = array("ten1"=>"dammio", "ten2"=>"BVN", "ten3"=>"faker");
?>

hoặc bạn có thể gán trực tiếp:

$names['ten1'] = "dammio";
$names['ten2'] = "BVN";
$names['ten3'] = "faker";

Để hiển thị giá trị các phần tử, bạn có thể sử dụng tên khóa trên biến mảng như sau:

<?php
$names = array("ten1"=>"dammio", "ten2"=>"BVN", "ten3"=>"faker");
echo $names['ten1'] . "<br/>";
echo $names['ten2'] . "<br/>";
echo $names['ten3'] . "<br/>";
?>

Để duyệt các phần tử trong mảng, bạn cũng có thể dùng vòng for hoặc foreach như kiểu mảng index. Ví dụ duyệt mảng bằng vòng foreach như sau.

<?php
$names = array("ten1"=>"dammio", "ten2"=>"BVN", "ten3"=>"faker");

foreach($names as $key => $value) {
    echo "Key=" . $key . ", Value=" . $value;
    echo "<br>";
}
?>

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

Để thêm 1 phần tử vào mảng, bạn có thể đếm số lượng phần tử rồi gán trực tiếp vị trí đếm cho phần tử mảng mới hoặc dùng hàm array_push().

Gán trực tiếp

Ví dụ gán trực tiếp dựa theo số lượng phần tử.

<?php
$names = array("dammio.com", "BVN", "oimmad");

$names[count($names)] = "new item";
print_r($names);
?>

Hàm array_push()

Hàm array_push() có cú pháp:

array_push($array, $item1, $item2,…)

$array là mảng gốc cần thêm phần tử
$item1, $item2,… là số phần tử cần thêm vào cuối mảng

Ví dụ dùng hàm array_push().

<?php
$names = array("dammio.com", "BVN", "oimmad");
array_push($names, "item 1");
print_r($names);
?>

Hàm array_unshift()

Để chèn phần tử mới đầu mảng, bạn cũng có thể dùng hàm array_unshift(). Hàm này hoạt động tương tự hàm array_push().

<?php
$names = array("dammio.com", "BVN", "oimmad");
array_unshift($names, "item 1");
print_r($names);
?>

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

Để xóa 1 phần tử trong mảng, bạn có thể dùng hàm unset() hoặc array_splice().

Hàm unset()

Hàm unset() sẽ xóa các biến được đặc tả nào đó. Hành vi của hàm này có thể khác nhau tùy theo kiểu dữ liệu cần xóa. Hàm unset() trả về kiểu void. Cú pháp hàm này như sau:

unset ($bien1, $bien2,…)

Bạn có thể xóa 1 hay nhiều biến (phần tử) cách nhau bằng dấu phẩy

Ví dụ xóa 1 phần tử bằng hàm unset() trong mảng.

<?php
$names = array("dammio.com", "BVN", "oimmad", "abc", "def");
unset($names[0]); // Xóa phần tử đầu tiên tên dammio.com (mảng bắt đầu từ vị trí 0)
print_r($names);  // Kết quả còn 4 phần tử còn lại

unset($names[1], $names[2]); // Tiếp tục xóa 2 phần tử ở vị trí thứ 1 và 2
echo "<br />";
print_r($names);  // Kết quả chỉ còn 2 phần tử "abc" và "def"
?>

Hàm array_splice()

Hàm này có công dụng tốt hơn hàm unset(). Ngoài việc xóa phần tử, hàm array_splice() còn cho phép thay thế bằng 1 phần tử khác. Hàm này trả về kiểu dữ liệu mảng.

array_splice ($array , $offset, $length, $replace_array)

$array: mảng đầu vào
$offset: vị trí bắt đầu xóa (kiểu int). Nếu vị trí là số nguyên dương (lớn hơn 0) thì vị trí tính thì đầu mảng, ngược lại vị trí số nguyên âm (bé hơn 0) thì tính từ cuối mảng. Nếu vị trí là 0 thì xóa hết mảng.
$length: độ dài cần xóa hoặc số phần tử cần xóa tính từ vị trí bắt đầu (tham số tùy chọn). Nếu không đặc tả length có nghĩa là xóa hết phần tử còn lại tính từ vị trí $offset.
$replace_array: mảng thay thế phần tử đã xóa (tham số tùy chọn). Kích thước mảng có thể bất kỳ, kết quả chỉ chèn thêm mảng thay thế vào vị trí thay thế.

Xét đến 1 số ví dụ sau sử dụng hàm array_splice().

<?php
$names = array("dammio.com", "BVN", "oimmad", "abc", "def");

array_splice($names, 1, 1); // Xóa phần tử ở vị trí 1 (phần tử "BVN")
print_r($names);
echo "<br />";

$temp = array("test", "test1");
array_splice($names, 2, 1, $temp); // Thay thế phần tử ở vị trí 2 bằng mảng temp
print_r($names);
echo "<br />";

array_splice($names, 0); // Xóa toàn bộ mảng
print_r($names);
?>

Kết luận

Như vậy, bài viết đã trình bày cho bạn về kiểu dữ liệu mảng và cách tạo, truy xuất và duyệt mảng trong PHP. Để tìm hiểu về mảng đa chiều, mời bạn theo dõi bài tiếp theo.

Bình luận Facebook

2
Để lại bình luận

avatar
1000
2 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
0 Các tác giả bình luận
Các tác giả bình luận gần đây
  Theo dõi  
mới nhất cũ nhất được bình chọn nhiều nhất
Thông báo của
trackback

[…] [PHP] Phần 15: Mảng trong PHP – 12 tháng 01, 2019 lúc 4:40:02 Chiều […]

trackback

[…] << Bài trước Trang mục lục Bài tiếp theo >> […]