Bài 8: Mảng PHP
Một mảng là một cấu trúc dữ liệu lưu trữ một hoặc nhiều loại tương tự của các giá trị trong một giá trị duy nhất. Ví dụ, nếu bạn muốn lưu trữ 100 số sau đó thay vì định nghĩa 100 biến thì thật dễ dàng để định nghĩa một mảng có chiều dài là 100. Có ba loại khác nhau của các mảng và mỗi giá trị ...
Một mảng là một cấu trúc dữ liệu lưu trữ một hoặc nhiều loại tương tự của các giá trị trong một giá trị duy nhất. Ví dụ, nếu bạn muốn lưu trữ 100 số sau đó thay vì định nghĩa 100 biến thì thật dễ dàng để định nghĩa một mảng có chiều dài là 100.
Có ba loại khác nhau của các mảng và mỗi giá trị mảng được truy cập bằng cách sử dụng ID được gọi là chỉ số mảng(index).
- Mảng số – Một mảng với chỉ mục là số. Các giá trị được lưu trữ và truy cập tuyến tính. Nghĩa là theo thứ tự số 0,1,2 …..
- Mảng kết – Một mảng với chuỗi là chỉ mục. Chúng lưu trữ như một cặp giá trị key=>value. Để truy cập loại mảng này ta phải biết key của chúng, vì mổi nhân tố điều có các key khác nhau.
- Đa chiều mảng – Một mảng có chứa một hoặc nhiều mảng và các giá trị được truy cập dùng nhiều chỉ số
Bây giờ chúng ta sẽ đi chi tiết từng loại mảng
Mảng số
Mảng này có thể lưu trử số, chuổi và bất kỳ đối tượng nhưng chỉ số mảng(ta gọi index cho đúng chuyên ngành) thì tương ứng là các số. Mặc định thì index của mảng bắt đầu từ số 0.
Ví dụ:
<html>
<body>
<?php
/* First method to create array. */
$numbers = array( 1, 2, 3, 4, 5);
foreach( $numbers as $value ) {
echo “Value is $value <br />”;
}
/* Second method to create array. */
$numbers[0] = “one”;
$numbers[1] = “two”;
$numbers[2] = “three”;
$numbers[3] = “four”;
$numbers[4] = “five”;
foreach( $numbers as $value ) {
echo “Value is $value <br />”;
}
?>
</body>
</html>
Cách khai báo một mảng trong PHP thì ta thực hiện như sau:
$tên biến=array();
Ta cũng có thể vừa khai báo vừa khởi tạo giá trị mảng cho biến như trong ví dụ trên là
$numbers = array( 1, 2, 3, 4, 5);
Nếu khai báo như thế này thì các số 1,2…5 là các giá trị, các chỉ số index được ngầm định cho giá trị đầu tiên là 0 tiếp là 1,2 ….n
Vậy với cách khai báo mảng thứ 1 và mảng thứ 2 là như nhau.
Vì đây là mảng có chỉ số index liên tục và là số nên ta có thể dùng for hoặc foreach để duyệt đều được, phần này đã được nói kỹ ở bài Các Vòng Lặp PHP. Nếu chưa rõ hoặc quên các bạn có thể quay lại bài trước.
Mảng kết
Cũng giống như loại mảng số nhưng khác ở chổ là chỉ số index là các chuỗi
Ví dụ:
<html>
<body>
<?php
/* First method to associate create array. */
$salaries = array(“mohammad” => 2000, “qadir” => 1000, “zara” => 500);
echo “Salary of mohammad is “. $salaries[‘mohammad’] . “<br />”;
echo “Salary of qadir is “. $salaries[‘qadir’]. “<br />”;
echo “Salary of zara is “. $salaries[‘zara’]. “<br />”;
/* Second method to create array. */
$salaries[‘mohammad’] = “high”;
$salaries[‘qadir’] = “medium”;
$salaries[‘zara’] = “low”;
echo “Salary of mohammad is “. $salaries[‘mohammad’] . “<br />”;
echo “Salary of qadir is “. $salaries[‘qadir’]. “<br />”;
echo “Salary of zara is “. $salaries[‘zara’]. “<br />”;
?>
</body>
</html>
Trong ví dụ trên chúng ta đã khai báo mảng
$salaries = array(‘mohamad’=>2000,’qadir’=>1000,’zada’=>500);
Vậy là chúng ta đã đưa vào index mà chúng ta mong muốn,làm rõ nghĩa hơn cho các giá trị mà chúng ta cần định nghĩa.
Và để truy cập mảng này ta phải truy cập đúng tên index như trong ví dụ các bạn có thể thấy.
Kết quả cho ví dụ sẽ là :
Salary of mohammad is 2000
Salary of qadir is 1000
Salary of zara is 500
Salary of mohammad is high
Salary of qadir is medium
Salary of zara is low
Mảng đa chiều
Đây là loại mảng lồng nhau, để truy cập loại này ta phải sử dụng nhiều chỉ mục, index
Thường thì ta chỉ sử dụng khoảng 2 hoặc 3 mảng lồng nhau phụ thuộc vào đặc thù của dữ liệu, tuy nhiên nếu nhiều hơn nữa thì sẽ sử dụng phương pháp lưu trử khác thay thế, vì sẽ rất tốn chi phí để duyệt loại mảng này.
Bạn thử tưởng tượng 2-3 vòng lặp for lồng vào nhau để duyệt nó thì chạy lâu cở nào nếu mảng có hàng trăm record
Chúng ta xét ví dụ:
<html>
<body>
<?php
$marks = array(
“mohammad” => array ( “physics” => 35, “maths” => 30, “chemistry” => 39 ),
“qadir” => array ( “physics” => 30, “maths” => 32, “chemistry” => 29 ),
“zara” => array ( “physics” => 31, “maths” => 22, “chemistry” => 39 )
);
/* Accessing multi-dimensional array values */
echo “Marks for mohammad in physics : ” ;
echo $marks[‘mohammad’][‘physics’] . “<br />”;
echo “Marks for qadir in maths : “;
echo $marks[‘qadir’][‘maths’] . “<br />”;
echo “Marks for zara in chemistry : ” ;
echo $marks[‘zara’][‘chemistry’] . “<br />”;
?>
</body>
</html>
Chúng ta đã định nghĩa một mảng tên là marks ( điểm số) , trong đó với mổi sinh viên sẽ có thêm một mảng chứa 3 môn học với các điểm số. Nếu không sử dụng loại mảng này thì ta sẽ định nghĩa 3 cái mảng, với mổi cái là chứ điểm số từng môn, rất bất tiện.
Vậy khi truy cập thì ta phải truy cập tất cả index dẩn đết kết quả cuối cùng
Echo $marks[‘zara’][‘chemistry’]; //truy cập mảng $marks với index là mảng con zara và trong mảng zara lấy trường dữ liệu chemistry.
Marks for mohammad in physics : 35
Marks for qadir in maths : 32
Marks for zara in chemistry : 39
Đây là cách khai báo và duyệt mảng để lấy dữ liệu, trong php chỉ có 3 loại mảng như thế này thôi, sau khi thuần thục thao tác duyệt lấy dữ liệu mảng, chúng ta sẽ học các hàm magic về array mà php xây dựng sẳn ở phần PHP nâng cao.
Và biết khi nào ta dùng thuật toán để điều khiển giá trị một mảng và khi nào dùng hàm có sẳn .
Rồi bài mảng đã kết thúc. Hẹn gặp lại các bạn bài kế tiếp trong serial lập trình PHP căn bản.
Bye bye.!!!