Ngu ngơ học làm web (58) - Mảng trong PHP

Tiếp theo của: Ngu ngơ học làm web (57) - Hàm trong PHP
------

Phần 58.       Mảng trong PHP

Đây là clip số 20: mảng trong PHP


Mảng (array) là một biến đặc biệt, có thể lưu được nhiều giá trị thuộc nhiều kiểu dữ liệu khác nhau.

Chỉ số của mảng được bắt đầu từ 0.

Có ba loại mảng: mảng số nguyên, mảng kết hợp và mảng đa chiều.

Đây là ví dụ về khai báo mảng: $things = array();

Đây là ví dụ về gán giá trị cho một phần tử của mảng: $things[] = ‘table’;

Để đếm số phần tử của mảng, sử dụng hàm count(). Ví dụ,

            <?php
                        $things = array();
                        $things[] = 'table';
                        $things[] = 'book';
                        $things[] = 'pen';

                        $length = count($things);
                        echo $length;
            ?>

Vậy, mảng sẽ rỗng nếu hàm count() trả về giá trị 0. Có cách khác để kiểm tra mảng có rỗng hay không, là dùng hàm empty(), ví dụ: empty($things) sẽ trả về 1 nếu $things rỗng và trả về 0 nếu $things không rỗng.

Để in nội dung của mảng (ở dạng dễ quan sát cấu trúc của mảng), sử dụng hàm print_r() kết hợp với thẻ <pre> của HTML; ví dụ,
echo '<pre>';
            print_r($things);
            echo '</pre>';

Đây là clip số 21: mảng liên tục


Mảng liên tục là mảng có chỉ số (key) là các số nguyên. Chỉ số mảng mặc định bắt đầu từ 0.

Có thể khai báo và gán giá trị cho các phần tử của mảng theo cách sau,

            <?php
                        $things = array();
                        $things[0] = 'table';
                        $things[1] = 'book';
                        $things[2] = 'pen';
            ?>

Cũng có thể khai báo và gán giá trị cho các phần tử của mảng theo cách sau,

<?php
                        $things = array('table', 'book', 'pen', 'pencil');
            ?>

Sử dụng chỉ số mảng để tham chiếu đến một phần tử bất kì, ví dụ, echo $things[2];

Đoạn mã sau xuất toàn bộ các phần tử của mảng:

<?php
                        $things = array('table', 'book', 'pen', 'pencil');
                        for($i = 0; $i < count($things); $i++) { echo $things[$i] . ' '; }
            ?>

Trong thực tế, thường sử dụng lệnh if và hàm empty để đảm bảo ‘chỉ xuất mảng khi nó không rỗng’:

<?php
                        $things = array('table', 'book', 'pen', 'pencil');
                        if(!empty($things)) {
                                    for($i = 0; $i < count($things); $i++) { echo $things[$i] . ' '; }
                        }
            ?>

Cách duyệt mảng thường được sử dụng là dùng vòng lặp foreach, ví dụ:

<?php
                        $things = array('table', 'book', 'pen', 'pencil');
                        if(!empty($things)) {
                                    foreach ($things as $key => $value) { echo $value . ' '; }
                        }
            ?>

Trong vòng lặp foreach, $key chính là chỉ số mảng, $value là giá trị của mảng tại vị trí $key tương ứng.

Đây là clip số 22: mảng không liên tục


Mảng không liên tục (hay mảng kết hợp) là mảng có chỉ số là chuỗi hoặc có cả chuỗi và số.

Ví dụ,
<?php
                        $things['mon'] = 'Monday';
                        $things['tue'] = 'Tuesday';
                        $things['wed'] = 'Wednesday';
                        if(!empty($things)) {
                                    foreach ($things as $key => $value) { echo $value . ' '; }
                        }
            ?>

Ví dụ sau là mảng có chỉ số vừa là kiểu chuỗi vừa là kiểu số nguyên,

<?php
                        $things['mon'] = 'Monday';
                        $things['tue'] = 'Tuesday';
                        $things['wed'] = 'Wednesday';
                        $things[]            = 'table';
                        $things[]            = 'book';

                        if(!empty($things)) {
                                    foreach ($things as $key => $value) { echo $value . ' '; }
                        }
            ?>

Cách khai báo mảng kết hợp gọn hơn, ví dụ,

$things = array(
'mon' => 'Monday',
                                    'tue' => 'Tuesday',
                                    'wed' => 'Wednesday',
0              => ‘table’,
1              => ‘book’);

Đây là clip số 23: mảng lồng – mảng đa chiều


Mảng đa chiều (hay mảng lồng) là mảng mà mỗi phần tử của mảng là một mảng, tiếp đó mỗi phần tử của mảng con cũng có thể là một mảng. Ví dụ,

<?php
                        $students = array();
                        $students['SV01'] = array('name' => 'Teo', 'sex' => 1, 'score' => array(3, 5, 7));
                        $students['SV02'] = array('name' => 'Ti', 'sex' => 0, 'score' => array(5, 5, 7));

                        echo '<pre>';
                        print_r($students);
                        echo '</pre>';
            ?>

Kết quả xuất ra là,

Array
(
    [SV01] => Array
        (
            [name] => Teo
            [sex] => 1
            [score] => Array
                (
                    [0] => 3
                    [1] => 5
                    [2] => 7
                )

        )

    [SV02] => Array
        (
            [name] => Ti
            [sex] => 0
            [score] => Array
                (
                    [0] => 5
                    [1] => 5
                    [2] => 7
                )

        )

)

Cách khai báo mảng đa chiều dễ nhìn hơn,

$students = array(
                                    'SV01' => array(
                                                                        'name' => 'Teo',
                                                                        'sex'  => 1,
                                                                        'score' => array(3, 5, 7)
                                                            ),
                                    'SV02' => array(
                                                                        'name' => 'Ti',
                                                                        'sex'  => 0,
                                                                        'score' => array(5, 5, 7)
                                                            )
                                    );

Để truy cập tới phần tử trong mảng đa chiều, sử dụng các dấu [], ví dụ, để in tên của sinh viên thứ hai,

echo $students['SV02']['name'];

Ví dụ, để in điểm môn 2 của sinh viên thứ 2,


echo $students['SV02']['score'][1];
-----------
Cập nhật [9/9/2020]
-----------
Xem thêm: