Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengosongkan tatasusunan kosong dalam tatasusunan dua dimensi dalam php

Bagaimana untuk mengosongkan tatasusunan kosong dalam tatasusunan dua dimensi dalam php

PHPz
PHPzasal
2023-04-19 09:15:49798semak imbas

Dalam operasi tatasusunan PHP, kami sering menghadapi kehadiran nilai nol dalam tatasusunan, yang biasanya mempengaruhi operasi pemprosesan data berikutnya, jadi perlu mengosongkan nilai nol (rentetan kosong, palsu, batal, dll. .) dalam array Lose. Artikel ini akan memperkenalkan cara mengosongkan tatasusunan kosong dalam tatasusunan dua dimensi.

Dalam PHP, anda boleh menggunakan fungsi array_filter untuk mengosongkan nilai kosong ​​​​dalam tatasusunan. Fungsi ini boleh menerima dua parameter, parameter pertama mewakili tatasusunan yang akan ditapis, dan parameter kedua mewakili fungsi panggil balik yang akan digunakan. Fungsi panggil balik boleh menentukan nilai mana yang hendak ditapis Contohnya, jika kita ingin menapis rentetan kosong dan palsu, kita boleh mentakrifkan fungsi panggil balik seperti ini:

function my_callback($value){
    return $value !== '' && $value !== false;
}

di mana $value mewakili setiap satu. elemen dalam tatasusunan, gunakan != Operator = menentukan sama ada syarat dipenuhi. Kemudian gunakan fungsi array_filter untuk menapis tatasusunan:

$arr = array('a', '', 'b', false, null);
$new_arr = array_filter($arr, 'my_callback');
print_r($new_arr);

Hasil output ialah:

Array
(
    [0] => a
    [2] => b
)

Seperti yang anda lihat, rentetan kosong dan palsu ditapis keluar. Tetapi apabila kita berurusan dengan tatasusunan dua dimensi, perkara menjadi lebih rumit.

Pertimbangkan tatasusunan dua dimensi berikut:

$arr = array(
    array('a', '', 'b'),
    array('c', false, null),
    array('', 'd', 'e')
);

Matlamat kami adalah untuk mengosongkannya daripada tatasusunan kosong. Menggunakan fungsi array_filter, anda boleh menulis syarat penapis dalam bentuk berikut:

function my_callback($row){
    return array_filter($row, function($value){
        return $value !== '' && $value !== false;
    });
}

di mana $row mewakili setiap baris dalam tatasusunan dua dimensi, gunakan array_filter untuk menapis elemen setiap baris, dan kemudian pulangkan hasilnya.

Kemudian kita boleh menggunakan fungsi array_map untuk menggunakan fungsi panggil balik ini pada setiap baris dalam tatasusunan dua dimensi:

$new_arr = array_map('my_callback', $arr);
print_r($new_arr);

Hasil output ialah:

Array
(
    [0] => Array
        (
            [0] => a
            [2] => b
        )

    [1] => Array
        (
            [0] => c
        )

    [2] => Array
        (
            [1] => d
            [2] => e
        )

)

Anda boleh lihat Sekarang, tatasusunan kosong telah dikosongkan. Perlu diingatkan bahawa hasil yang dikembalikan dengan menggunakan fungsi array_map masih merupakan tatasusunan dua dimensi, dan setiap baris mungkin mengandungi bilangan elemen yang berbeza, jadi tatasusunan mungkin perlu diindeks semula menggunakan fungsi array_values.

$new_arr = array_map('my_callback', $arr);
$new_arr = array_map('array_values', $new_arr);
print_r($new_arr);

Hasil output ialah:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
        )

    [2] => Array
        (
            [0] => d
            [1] => e
        )

)

Seperti yang anda lihat, tatasusunan telah diindeks semula.

Untuk meringkaskan, mengosongkan tatasusunan kosong dalam tatasusunan dua dimensi boleh dicapai dengan menggabungkan fungsipenapis_tatasusunan dan peta_tatasusunan Anda perlu menulis dua fungsi panggil balik, satu untuk menapis elemen dan satu untuk mengindeks semula tatasusunan yang ditapis . Kelebihan kaedah ini ialah ia mudah dan mudah difahami, tetapi kelemahannya ialah kodnya agak panjang. Untuk program yang memerlukan operasi tatasusunan yang kerap, anda mungkin ingin mempertimbangkan untuk menggunakan algoritma yang lebih cekap.

Atas ialah kandungan terperinci Bagaimana untuk mengosongkan tatasusunan kosong dalam tatasusunan dua dimensi 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