Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melintasi tatasusunan tidak teratur dalam php

Bagaimana untuk melintasi tatasusunan tidak teratur dalam php

PHPz
PHPzasal
2023-04-18 10:20:46525semak imbas

Dalam PHP, anda boleh menggunakan struktur gelung untuk melintasi tatasusunan. Walau bagaimanapun, jika kita mempunyai tatasusunan yang tidak teratur, bagaimanakah kita harus melintasinya? Mari kita bincangkan cara merentasi tatasusunan yang tidak teratur.

Apakah tatasusunan tidak sekata?

Tatasusunan tidak sekata bermakna kunci setiap elemen dalam tatasusunan bukanlah nombor atau nilai berterusan, tetapi rentetan atau nombor yang berbeza. Contohnya:

$irregular_array = array(
    'apple' => array('color' => 'red', 'weight' => '100g'),
    'banana' => array('color' => 'yellow', 'weight' => '150g', 'brand' => 'Chiquita'),
    'orange' => array('color' => 'orange', 'taste' => 'sweet'),
    'grape' => array('color' => 'purple', 'weight' => '10g', 'price' => '2.99'),
    'watermelon' => array('weight' => '5kg')
);

Dalam tatasusunan ini, nama kunci setiap subtatasusunan adalah berbeza, malah sesetengahnya tidak mempunyai pasangan nilai kunci tertentu. Ini ialah tatasusunan yang tidak teratur.

Bagaimana untuk melintasi tatasusunan yang tidak teratur?

Apabila kita perlu melintasi tatasusunan yang tidak teratur, kita boleh menggunakan gelung foreach serta beberapa pertimbangan untuk menyelesaikan masalah. Lihat kod berikut:

foreach ($irregular_array as $key => $value) {
    echo 'Fruit: ' . $key . '<br>';
    foreach ($value as $k => $v) {
        echo $k . ': ' . $v . '<br>';
    }
    echo '<br>';
}

Kod ini mula-mula menggunakan gelung foreach untuk melintasi keseluruhan tatasusunan, dan menetapkan nama kunci dan nilai kunci setiap elemen kepada pembolehubah $key dan $value. Seterusnya, gunakan gelung foreach untuk merentasi $value dan tetapkan setiap nama kunci dan nilai kunci dalam subarray kepada pembolehubah $k dan $v masing-masing. Kemudian keluarkan hasilnya.

Kesan pelaksanaan kod di atas adalah seperti berikut:

Fruit: apple
color: red
weight: 100g

Fruit: banana
color: yellow
weight: 150g
brand: Chiquita

Fruit: orange
color: orange
taste: sweet

Fruit: grape
color: purple
weight: 10g
price: 2.99

Fruit: watermelon
weight: 5kg

Kami juga boleh menambah beberapa pernyataan penghakiman untuk mengendalikan kemungkinan ketidakkonsistenan dalam tatasusunan yang tidak teratur. Contohnya:

foreach ($irregular_array as $key => $value) {
    echo 'Fruit: ' . $key . '<br>';
    foreach ($value as $k => $v) {
        if ($k == 'color') {
            echo 'Color: ' . $v . '<br>';
        }
        if ($k == 'weight') {
            echo 'Weight: ' . $v . '<br>';
        }
        if ($k == 'brand') {
            echo 'Brand: ' . $v . '<br>';
        }
        if ($k == 'taste') {
            echo 'Taste: ' . $v . '<br>';
        }
        if ($k == 'price') {
            echo 'Price: ' . $v . '<br>';
        }
    }
    echo '<br>';
}

Dalam kod di atas, kami telah menambah beberapa pernyataan if untuk menyemak sama ada nama kunci tertentu wujud dalam tatasusunan. Jika ia wujud, nilai kunci yang sepadan dengan nama kunci adalah output. Hasil pelaksanaan kod di atas adalah sama seperti di atas.

Ringkasan

Di atas adalah kaedah merentasi tatasusunan yang tidak teratur Apabila menggunakannya, kita boleh menggunakan kaedah yang berbeza mengikut situasi tertentu. Jika kita berurusan dengan tatasusunan tidak teratur yang diketahui, kita boleh menulis kod traversal secara manual untuk memenuhi keperluan kita. Jika anda berurusan dengan beberapa tatasusunan tidak teratur yang dijana secara dinamik, anda boleh memilih kaedah yang berbeza mengikut keperluan anda. Mana-mana kaedah boleh membantu kami menangani tatasusunan yang tidak teratur dan meningkatkan kecekapan kerja kami.

Atas ialah kandungan terperinci Bagaimana untuk melintasi tatasusunan tidak teratur dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn