⊗ppPmRcMA 220 of 447 menu

Đệ quy và cấu trúc đa chiều trong PHP

Cho một mảng đa chiều với cấp độ lồng nhau tùy ý, ví dụ, như thế này:

<?php $arr = [ 1, [ 2, 7, 8 ], [ 3, 4, [5, [6, 7]], ] ]; ?>

Như bạn thấy, mảng này có cấu trúc phức tạp, và giả định rằng cấu trúc này có thể là tùy ý và các cấp độ lồng nhau có thể sâu đến mức bất kỳ.

Giả sử chúng ta muốn in ra tất cả các phần tử nguyên thủy (tức là không phải mảng) của mảng của chúng ta. Trong trường hợp này, để duyệt qua mảng như vậy, chúng ta đơn giản sẽ không thể sử dụng các vòng lặp, vì mảng có cấu trúc không đều và cấp độ lồng nhau không xác định.

Tuy nhiên, để duyệt qua một mảng như vậy, đệ quy sẽ rất thuận tiện.

Đầu tiên, hãy tạo một hàm, trong đó chúng ta truyền mảng của mình làm tham số, và trong hàm chúng ta tạo một vòng lặp để duyệt qua mảng của chúng ta:

<?php function func($arr) { foreach ($arr as $elem) { echo $elem; } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]); ?>

Vòng lặp chúng ta tạo sẽ chỉ duyệt qua các phần tử của mảng chính. Tức là đầu tiên nó sẽ xuất ra 1, sau đó [2, 7, 8], và sau đó [3, 4, [5, [6, 7]].

Bây giờ chúng ta hãy phân tách trong vòng lặp các phần tử nguyên thủy và các phần tử là mảng:

<?php function func($arr) { foreach ($arr as $elem) { if (is_array($elem)) { // phần tử là mảng } else { // phần tử là nguyên thủy echo $elem; } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]); ?>

Và bây giờ chúng ta sẽ làm sao cho nếu phần tử của chúng ta là một mảng, hàm sẽ gọi chính nó, truyền tham số là mảng đó:

<?php function func($arr) { foreach ($arr as $elem) { if (is_array($elem)) { func($elem); } else { echo $elem; } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]); ?>

Cho một mảng đa chiều với cấp độ lồng nhau tùy ý, ví dụ, như thế này:

<?php $arr = [1, 2, 3, [4, 5, [6, 7]], [8, [9, 10]]]; ?>

Sử dụng đệ quy, hãy xuất tất cả các phần tử nguyên thủy của mảng này ra màn hình.

Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối