Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk mengalih keluar tatasusunan kosong dalam tatasusunan multidimensi dalam php

Bagaimana untuk mengalih keluar tatasusunan kosong dalam tatasusunan multidimensi dalam php

PHPz
PHPzasal
2023-04-19 11:39:32678semak imbas

Dengan perkembangan PHP, PHP telah menjadi salah satu bahasa yang paling banyak digunakan dalam bidang pembangunan web. Dalam pembangunan sebenar, pembangun selalunya perlu berurusan dengan tatasusunan kosong dalam tatasusunan berbilang dimensi, yang bukan sahaja membazirkan memori, tetapi juga mempunyai kesan yang besar terhadap pemprosesan data dan kecekapan kod. Oleh itu, artikel ini akan membincangkan cara mengalih keluar tatasusunan kosong dengan cepat daripada tatasusunan berbilang dimensi dalam PHP dan meningkatkan kecekapan kod.

1. Definisi tatasusunan berbilang dimensi dan tatasusunan kosong

Dalam PHP, tatasusunan berbilang dimensi bermaksud tatasusunan yang mengandungi tatasusunan lain. Contohnya:

$multi_array = array(
    array('A','B','C'),
    array('D','E','F'),
    array('G','H','I')
);

Tatasusunan kosong ialah tatasusunan yang kosong (iaitu tidak mempunyai nilai) pada kedudukan tertentu dalam tatasusunan berbilang dimensi. Contohnya:

$multi_array = array(
    array('A','B',),
    array('','F','G'),
    array('','J','K')
);

Dalam contoh di atas, kedudukan pertama baris kedua dan kedudukan pertama baris ketiga ialah tatasusunan kosong.

2. Kaedah untuk membuang tatasusunan kosong

1 Gunakan gelung foreach

Ini ialah kaedah paling asas yang boleh kita gunakan untuk menggelung tatasusunan berbilang dimensi ia mengikut situasi Fungsi unset() membuang tatasusunan kosong. Kaedah ini mudah dan mudah difahami, tetapi ia akan memberi kesan tertentu terhadap kecekapan kod, terutamanya apabila memproses data berskala besar.

foreach($multi_array as $k=>$v){
    if(is_array($v)){
        foreach($v as $key=>$val){
            if($val === '' || $val === null){ 
                unset($multi_array[$k][$key]);
             }
        }
    }
    if(empty($multi_array[$k])){ 
        unset($multi_array[$k]); 
    }
}

2. Gunakan fungsi array_filter()

Fungsi array_filter() boleh menapis setiap elemen dalam tatasusunan berbilang dimensi dan mengembalikan elemen yang nilai tatasusunannya tidak kosong. Fungsi ini hanya boleh mengalih keluar nilai nol dalam tatasusunan satu dimensi, oleh itu, kita perlu menggunakan fungsi array_map() untuk memproses tatasusunan berbilang dimensi.

function array_filter_recursive($input)
{
    foreach($input as &$value) {
        if(is_array($value)){
            $value = array_filter_recursive($value);
        }
    }
    return array_filter($input);
}

$multi_array = array_filter_recursive($multi_array);

3. Gunakan fungsi array_walk()

Fungsi array_walk() digunakan untuk melintasi setiap elemen tatasusunan, membenarkan pembangun memproses data dalam fungsi panggil balik. Dalam kaedah ini, kami mengira bilangan elemen dalam tatasusunan berbilang dimensi melalui fungsi panggil balik Jika bilangan elemen ialah 0, tatasusunan dipadamkan daripada tatasusunan berbilang dimensi.

function remove_empty_arrays(&$value)
{
    if (is_array($value)) {
        $value = array_filter($value, 'remove_empty_arrays');
    }
    return (!empty($value) || $value === '0');
}

array_walk($multi_array, 'remove_empty_arrays');

3. Ringkasan

Dalam PHP, menangani tatasusunan kosong dalam tatasusunan berbilang dimensi selalunya merupakan salah satu masalah yang perlu diselesaikan oleh pembangun. Artikel ini memperkenalkan tiga kaedah pemprosesan biasa: menggunakan gelung foreach, menggunakan fungsi array_filter() dan menggunakan fungsi array_walk(). Untuk pemprosesan data berskala besar, kita harus memilih kaedah yang lebih cekap untuk meningkatkan kecekapan dan prestasi kod.

Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar tatasusunan kosong dalam tatasusunan multidimensi 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