Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk memadam beberapa subarray dalam tatasusunan dua dimensi dalam php

Bagaimana untuk memadam beberapa subarray dalam tatasusunan dua dimensi dalam php

PHPz
PHPzasal
2023-04-18 10:26:08530semak imbas

Dalam PHP, kadangkala kita perlu memadamkan beberapa tatasusunan daripada tatasusunan dua dimensi. Keperluan ini agak biasa Sebagai contoh, kita perlu mengabaikan beberapa data tertentu, atau menapis beberapa data yang tidak memenuhi keperluan daripada set data asal. Artikel ini akan memperkenalkan cara menggunakan fungsi terbina dalam PHP dan fungsi tersuai untuk memadam beberapa tatasusunan dalam tatasusunan dua dimensi.

1. Fungsi terbina dalam PHP array_filter() memadamkan beberapa tatasusunan dalam tatasusunan dua dimensi

fungsi terbina dalam PHP array_filter() boleh menapis elemen tertentu dalam tatasusunan dan mengembalikan a tatasusunan baru. Apabila memadamkan beberapa tatasusunan dalam tatasusunan dua dimensi, kita boleh menggunakan fungsi ini untuk mencapainya. Berikut ialah contoh:

$array = [
    ['id' => 1, 'name' => 'Alice', 'gender' => 'female'],
    ['id' => 2, 'name' => 'Bob', 'gender' => 'male'],
    ['id' => 3, 'name' => 'Charlie', 'gender' => 'male'],
    ['id' => 4, 'name' => 'David', 'gender' => 'male']
];

$exclude_ids = [2, 3];

$new_array = array_filter($array, function($item) use ($exclude_ids) {
    return !in_array($item['id'], $exclude_ids);
});

print_r($new_array);

Dalam contoh ini, kami mempunyai tatasusunan dua dimensi $array yang mengandungi 4 subarray dan kami mahu memadamkan subarray dengan id 2 dan 3 daripadanya. Kami mentakrifkan tatasusunan $exclude_ids untuk mengandungi nilai id yang perlu dipadamkan. Kemudian kami menggunakan fungsi array_filter() dan hantar ke fungsi penutupan. Fungsi ini menyemak sama ada nilai 'id' dalam subarray berada dalam tatasusunan $exclude_ids dan mengembalikan palsu jika benar, jika tidak, ia mengembalikan benar. Selain itu, kami juga menggunakan pernyataan penggunaan supaya fungsi penutupan boleh mengakses tatasusunan $exclude_ids. Akhirnya, kami mendapat tatasusunan baharu yang mengandungi hanya subarray dengan nilai 'id' selain daripada 2 dan 3.

2. Fungsi tersuai untuk memadam beberapa tatasusunan dalam tatasusunan dua dimensi

Selain menggunakan fungsi terbina dalam, kami juga boleh menulis fungsi kami sendiri untuk memadam beberapa tatasusunan dalam dua- tatasusunan dimensi. Ini membolehkan kawalan yang lebih fleksibel ke atas cara dan syarat pemadaman. Berikut ialah contoh:

function exclude_subarrays($array, $condition) {
    $new_array = [];
    foreach($array as $key => $subarray) {
        $should_exclude = true;
        foreach($condition as $k => $v) {
            if($subarray[$k] !== $v) {
                $should_exclude = false;
                break;
            }
        }
        if(!$should_exclude) {
            $new_array[] = $subarray;
        }
    }
    return $new_array;
}

$array = [
    ['id' => 1, 'name' => 'Alice', 'gender' => 'female'],
    ['id' => 2, 'name' => 'Bob', 'gender' => 'male'],
    ['id' => 3, 'name' => 'Charlie', 'gender' => 'male'],
    ['id' => 4, 'name' => 'David', 'gender' => 'male']
];

$exclude_condition = ['id' => 2, 'gender' => 'male'];

$new_array = exclude_subarrays($array, $exclude_condition);

print_r($new_array);

Dalam contoh ini, kami juga mempunyai tatasusunan dua dimensi $array yang mengandungi 4 sub-array dan kami perlu memadam sub-array dengan id 2 dan jantina lelaki . Kami menulis fungsi yang dipanggil exclude_subarrays untuk menyelesaikan tugas ini Fungsi ini menerima dua parameter: tatasusunan asal $array dan tatasusunan bersekutu $syarat yang mengandungi syarat pemadaman. Di dalam fungsi, kami mencipta tatasusunan baharu yang kosong $new_array, dan kemudian menggunakan foreach untuk melintasi semua subarray dalam tatasusunan asal. Untuk setiap subarray, kami mentakrifkan bendera $should_exclude, yang ditetapkan kepada benar apabila dimulakan. Kami juga menggunakan foreach untuk melintasi dan memadam setiap pasangan nilai kunci dalam keadaan $condition. Untuk setiap pasangan nilai kunci, kami menyemak sama ada kunci yang sepadan dalam subarray semasa adalah sama dengan nilai yang diperlukan. Jika sama, ini bermakna subarray ini harus dipadamkan, jadi tetapkan bendera $should_exclude kepada palsu dan lompat keluar dari gelung. Jika tidak, teruskan menyemak pasangan nilai kunci seterusnya. Selepas melengkapkan semakan bagi keseluruhan tatasusunan $condition, jika $should_exclude masih benar, ini bermakna subarray semasa tidak perlu dipadamkan, jadi ia ditambahkan pada tatasusunan $new_array. Akhir sekali, kembalikan tatasusunan baharu.

Ringkasan

Di atas ialah dua cara untuk memadamkan beberapa tatasusunan dalam tatasusunan dua dimensi. Walaupun fungsi terbina dalam array_filter() adalah lebih pendek, fungsi tersuai adalah lebih fleksibel dan mungkin lebih sesuai dalam situasi tertentu. Semasa penggunaan, anda harus memilih secara fleksibel mengikut keadaan sebenar.

Atas ialah kandungan terperinci Bagaimana untuk memadam beberapa subarray 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