Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Mảng đa chiều (Multidimensional Array) trong PHP

Định nghĩa và cách sử dụng

Một mảng đa chiều trong PHP có thể được xem như một mảng của các mảng, trong đó mỗi phần tử bên trong mảng là một mảng khác. Các phần tử bên trong của mảng đa chiều có thể là mảng liên hợp (associative) hoặc mảng chỉ số (indexed).

Mặc dù mảng có thể lồng nhau đến bất kỳ cấp độ nào, nhưng mảng hai chiều với nhiều mảng một chiều bên trong mảng ngoài cùng là trường hợp sử dụng thực tế nhất.

Cú pháp

// Mảng hai chiều liên hợp
$twodim = array(
    "row1" => array("k1" => "v1", "k2" => "v2", "k3" => "v3"),
    "row2" => array("k4" => "v4", "k5" => "v5", "k6" => "v6")
);

// Mảng hai chiều chỉ số
$twodim = array(
    array("v1", "v2", "v3"),
    array("v4", "v5", "v6")
);

Đối với mảng hai chiều chỉ số, ta có thể truy cập phần tử bằng chỉ số:

$arr[row][column];

Phiên bản PHP

Sử dụng dấu ngoặc vuông [] để gán mảng khả dụng từ PHP 5.4.

Ví dụ

Mảng 2D chỉ số (indexed)

<?php
$arrs = array(
    array(1, 2, 3, 4, 5),
    array(11, 22, 33, 44, 55),
);

foreach ($arrs as $arr) {
    foreach ($arr as $i) {
        echo $i . " ";
    }
    echo "\n";
}

$cols = count($arrs[0]);
$rows = count($arrs);
for ($i = 0; $i < $rows; $i++) {
    for ($j = 0; $j < $cols; $j++) {
        echo $arrs[$i][$j] . " ";
    }
    echo "\n";
}
?>

Kết quả

1 2 3 4 5
11 22 33 44 55
1 2 3 4 5
11 22 33 44 55

Mảng 2D chỉ số với các mảng liên hợp bên trong

<?php
$arrs = array(
    array(1 => 100, 2 => 200, 3 => 300),
    array(1 => 'aa', 2 => 'bb', 3 => 'cc'),
);

foreach ($arrs as $arr) {
    foreach ($arr as $i => $j) {
        echo $i . "->" . $j . " ";
    }
    echo "\n";
}

for ($row = 0; $row < count($arrs); $row++) {
    foreach ($arrs[$row] as $i => $j) {
        echo $i . "->" . $j . " ";
    }
    echo "\n";
}
?>

Kết quả

1->100 2->200 3->300
1->aa 2->bb 3->cc
1->100 2->200 3->300
1->aa 2->bb 3->cc

Mảng hai chiều liên hợp

<?php
$arr1 = array("rno" => 11, "marks" => 50);
$arr2 = array("rno" => 22, "marks" => 60);
$arrs = array(
    "Manav" => $arr1,
    "Ravi" => $arr2
);

foreach ($arrs as $key => $val) {
    echo "name: " . $key . " ";
    foreach ($val as $i => $j) {
        echo $i . "->" . $j . " ";
    }
    echo "\n";
}
?>

Kết quả

name: Manav rno->11 marks->50
name: Ravi rno->22 marks->60

Mảng liên hợp với giá trị là mảng chỉ số

<?php
$arr1 = array("PHP", "Java", "Python");
$arr2 = array("Oracle", "MySQL", "SQLite");
$arrs = array(
    "Langs" => $arr1,
    "DB" => $arr2
);

foreach ($arrs as $key => $val) {
    echo $key . ": ";
    for ($i = 0; $i < count($val); $i++) {
        echo $val[$i] . " ";
    }
    echo "\n";
}
?>

Kết quả

Langs: PHP Java Python
DB: Oracle MySQL SQLite