Khóa mảng đa chiều PHP

Mục đích của mảng là lưu trữ dữ liệu một cách có tổ chức và cho phép truy cập dễ dàng bằng chỉ mục hoặc khóa. Bạn đã học về mảng một chiều trong bài học trước. Mở rộng cùng một mảng, hãy tưởng tượng nếu bạn có thể lưu trữ dữ liệu theo hàng và cột. Có thể lưu trữ các chiều khác nhau của dữ liệu trong một mảng với mảng nhiều chiều. Nó có thể được xem như một mảng với trong một mảng khác. Nói tóm lại, một mảng lồng nhau là một mảng nhiều chiều

Không thể biểu diễn dữ liệu nhiều chiều trong mảng một chiều. Vì vậy, chúng ta cần một mảng lồng nhau. Đây là cú pháp của mảng nhiều chiều-

$MultiDimenArray-Name=array( [key=>] mảng( [key=>]array…. )))

Bạn có thể định nghĩa một mảng như một phần tử của một mảng. Một mảng được lồng trong một mảng khác có thể được tạo bằng một khóa chuỗi giống như một mảng kết hợp hoặc không có khóa. Nếu không có khóa nào được chỉ định thì các giá trị chỉ mục sẽ tự động được phân bổ cho các phần tử mảng giống như một mảng được lập chỉ mục

Ví dụ về Mảng đa chiều PHP

Nếu bạn muốn lưu trữ dữ liệu của những người bán hàng khác nhau ở các thành phố khác nhau trong các quý khác nhau của năm, mảng đa chiều PHP sẽ là một công cụ hữu ích

nhân viên bán hàng. Andy

Quý 1Quý 2Quý 3Quý 4New York36239888Chicago78564537Denver34783621

nhân viên bán hàng. Bob

Quý 1Quý 2Quý 3Quý 4New York22677198Chicago76538361Denver45692345

nhân viên bán hàng. Chris

Quý một Quý hai Quý ba Quý bốnNew York22675645Chicago76537836Denver22677198

Mảng đa chiều có phím

Trong ví dụ sau, các phần tử mảng lồng nhau được liên kết với các khóa. Vì vậy, trong khi truy cập chúng, các khóa phải được sử dụng giống như bạn đã làm trong mảng kết hợp


	array("NewYork"=>array("Q1"=>36,"Q2"=>23,"Q3"=>98,"Q4"=>88),
	      "Chicago"=>array("Q1"=>78,"Q2"=>56,"Q3"=>45,"Q4"=>37),
	      "Denver"=>array("Q1"=>34,"Q2"=>78,"Q3"=>36,"Q4"=>21)),
		"Bob"=>
		array("NewYork"=>array("Q1"=>22,"Q2"=>67,"Q3"=>71,"Q4"=>98),
		"Chicago"=>array("Q1"=>76,"Q2"=>53,"Q3"=>83,"Q4"=>61),
		"Denver"=>array("Q1"=>45,"Q2"=>69,"Q3"=>23,"Q4"=>46)	),
		"Chris"=>array( NewYork"=>array("Q1"=>22,"Q2"=>67,"Q3"=>56,"Q4"=>45),
		"Chicago"=>array("Q1"=>76,"Q2"=>53,"Q3"=>78,"Q4"=>36),
		"Denver"=>array("Q1"=>22,"Q2"=>67,"Q3"=>71,"Q4"=>98)));
				
echo $SalesData["Andy"]["Chicago"]["Q3"]. ',';	
echo $SalesData["Andy"]["NewYork"]["Q4"].",";	
echo $SalesData["Bob"]["Denver"]["Q1"].",";	
echo $SalesData["Bob"]["Chicago"]["Q2"].",";	
echo $SalesData["Chris"]["Denver"]["Q1"].",";	
echo $SalesData["Chris"]["NewYork"]["Q4"];
?>

Khóa mảng đa chiều PHP

Mảng đa chiều có chỉ mục

Khi bạn không chỉ định khóa trong khi tạo mảng đa chiều PHP, các chỉ mục sẽ tự động được gán cho các phần tử. Bây giờ bạn có thể sử dụng các chỉ mục giống như cách bạn đã làm với mảng một chiều. Bạn có thể sử dụng Vòng lặp For/Vòng lặp While để lặp qua mảng lồng nhau và sử dụng các phần tử như trong mã ví dụ bên dưới

Để xử lý việc tìm kiếm một mảng nhiều chiều, bạn có thể sử dụng câu lệnh

$users = [
    [
        "uid" => "111",
        "name" => "Nathan",
        "age" => 29,
    ],
    [
        "uid" => "254",
        "name" => "Jessie",
        "age" => 25,
    ],
    [
        "uid" => "305",
        "name" => "Michael",
        "age" => 30,
    ],
];
5 hoặc hàm
$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
0

Một mảng đa chiều PHP có thể được tìm kiếm để xem nó có giá trị nhất định hay không

Hãy xem một ví dụ về việc thực hiện tìm kiếm. Giả sử bạn có một mảng nhiều chiều với cấu trúc sau

$users = [
    [
        "uid" => "111",
        "name" => "Nathan",
        "age" => 29,
    ],
    [
        "uid" => "254",
        "name" => "Jessie",
        "age" => 25,
    ],
    [
        "uid" => "305",
        "name" => "Michael",
        "age" => 30,
    ],
];

Để tìm kiếm mảng theo giá trị của nó, bạn có thể sử dụng câu lệnh

$users = [
    [
        "uid" => "111",
        "name" => "Nathan",
        "age" => 29,
    ],
    [
        "uid" => "254",
        "name" => "Jessie",
        "age" => 25,
    ],
    [
        "uid" => "305",
        "name" => "Michael",
        "age" => 30,
    ],
];
5

Bạn cần lặp qua mảng và xem liệu một trong các mảng con có giá trị cụ thể không

Ví dụ: giả sử bạn muốn lấy mảng có giá trị

$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
2 là
$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
3

$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}

Lưu ý rằng toán tử so sánh trong đoạn mã trên sử dụng gấp ba lần bằng nhau

$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
4

Điều này có nghĩa là loại giá trị được so sánh phải giống nhau

Đoạn mã trên sẽ tạo ra đầu ra sau

Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)

Trong PHP5. 5 trở lên, bạn cũng có thể sử dụng hàm

$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
0 kết hợp với hàm
$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
6 để tìm mảng thỏa mãn điều kiện

Xem ví dụ bên dưới

$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
0

Đoạn mã trên sẽ tạo ra đầu ra sau

$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
1

Hãy tạo một chức năng tùy chỉnh từ mã tìm kiếm để bạn có thể thực hiện tìm kiếm động hơn dựa trên khóa và giá trị

Hàm tùy chỉnh này chấp nhận ba tham số

  1. $id = "111";
    foreach ($users as $k => $v) {
        if ($v["uid"] === $id) {
            print $users[$k];
        }
    }
    
    7 bạn muốn tìm kiếm
  2. $id = "111";
    foreach ($users as $k => $v) {
        if ($v["uid"] === $id) {
            print $users[$k];
        }
    }
    
    8 bạn muốn chìa khóa có
  3. $id = "111";
    foreach ($users as $k => $v) {
        if ($v["uid"] === $id) {
            print $users[$k];
        }
    }
    
    9 bạn muốn tìm kiếm

Chức năng có thể được viết như sau

$id = "111";
foreach ($users as $k => $v) {
    if ($v["uid"] === $id) {
        print $users[$k];
    }
}
5

Để xử lý trường hợp không tìm thấy giá trị cụ thể, bạn cần thêm điều kiện

Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)
0 vào hàm

Bạn có thể trả lại

Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)
1 hoặc
Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)
2 khi không tìm thấy
Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)
3

$users = [
    [
        "uid" => "111",
        "name" => "Nathan",
        "age" => 29,
    ],
    [
        "uid" => "254",
        "name" => "Jessie",
        "age" => 25,
    ],
    [
        "uid" => "305",
        "name" => "Michael",
        "age" => 30,
    ],
];
0

Bây giờ bạn có thể sử dụng hàm

Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)
4 bất cứ lúc nào bạn cần tìm kiếm một mảng nhiều chiều

Dưới đây là một số ví dụ

$users = [
    [
        "uid" => "111",
        "name" => "Nathan",
        "age" => 29,
    ],
    [
        "uid" => "254",
        "name" => "Jessie",
        "age" => 25,
    ],
    [
        "uid" => "305",
        "name" => "Michael",
        "age" => 30,
    ],
];
2

Đoạn mã trên sẽ tạo ra đầu ra sau

$users = [
    [
        "uid" => "111",
        "name" => "Nathan",
        "age" => 29,
    ],
    [
        "uid" => "254",
        "name" => "Jessie",
        "age" => 25,
    ],
    [
        "uid" => "305",
        "name" => "Michael",
        "age" => 30,
    ],
];
3

Bây giờ bạn đã học cách tìm kiếm một mảng nhiều chiều trong PHP

Khi cần tìm một mảng có giá trị cụ thể, bạn chỉ cần gọi hàm

Array
(
    [uid] => 111
    [name] => Nathan
    [age] => 29
)
4 ở trên

Làm cách nào để lấy khóa từ mảng đa chiều trong PHP?

Sử dụng vòng lặp foreach . Chúng ta có thể sử dụng vòng lặp foreach để truy xuất giá trị của từng khóa được liên kết bên trong mảng kết hợp đa chiều.

Làm cách nào để xóa khóa mảng đa chiều trong PHP?

Sử dụng hàm unset() . Hàm unset() dùng để xóa phần tử khỏi mảng. Hàm unset được sử dụng để hủy bất kỳ biến nào khác và sử dụng tương tự để xóa bất kỳ phần tử nào của một mảng. Lệnh bỏ đặt này lấy khóa mảng làm đầu vào và xóa phần tử đó khỏi mảng.

Array_keys() dùng để làm gì trong PHP?

Mảng_keys() là một hàm tích hợp sẵn trong PHP và được sử dụng để trả về tất cả các khóa của và mảng hoặc tập hợp con của các khóa.

Làm cách nào để tạo một mảng nhiều chiều trong PHP?

Bạn tạo một mảng nhiều chiều sử dụng cấu trúc array() , giống như tạo một mảng thông thường. Sự khác biệt là mỗi phần tử trong mảng bạn tạo chính là một mảng. Ví dụ. $myArray = mảng(mảng(giá trị1,giá trị2,giá trị3),mảng(giá trị4,giá trị5,giá trị6),mảng(giá trị7,giá trị8,giá trị9));