Rumah > pembangunan bahagian belakang > masalah PHP > Bagaimana untuk memadam subarray tertentu dalam tatasusunan dua dimensi dalam php

Bagaimana untuk memadam subarray tertentu dalam tatasusunan dua dimensi dalam php

PHPz
Lepaskan: 2023-04-20 14:57:19
asal
752 orang telah melayarinya

Dalam proses pembangunan PHP, tatasusunan ialah jenis data yang sangat penting, yang boleh menyimpan dan mewakili sejumlah besar data dengan mudah. Kadangkala, kita perlu mengalih keluar tatasusunan tertentu daripada tatasusunan dua dimensi Apakah yang perlu kita lakukan? Artikel ini akan memperkenalkan dua kaedah berbeza untuk mencapai tujuan ini.

Kaedah 1: Gunakan fungsi array_filter

Fungsi array_filter ialah fungsi terbina dalam PHP, digunakan untuk menapis elemen dalam tatasusunan. Kita boleh menggunakan fungsi ini untuk mengalih keluar tatasusunan tertentu daripada tatasusunan dua dimensi. Pelaksanaan khusus adalah seperti berikut:

function removeArray($arr, $remove)
{
    return array_filter($arr, function ($item) use ($remove) {
        return !in_array($item, $remove);
    });
}
Salin selepas log masuk

Dalam kod di atas, kami mentakrifkan fungsi bernama removeArray, yang menerima dua parameter:

  • $arr: menunjukkan keperluan daripada A tatasusunan dua dimensi tatasusunan terkumpul.
  • $remove: Menunjukkan set tatasusunan yang perlu dialih keluar.

Seterusnya, kami menggunakan fungsi array_filter untuk menapis tatasusunan $arr. Dalam fungsi panggil balik, kami menggunakan fungsi in_array untuk menentukan sama ada tatasusunan yang sedang dilalui perlu dihapuskan. Mengembalikan palsu jika ia perlu dihapuskan, benar sebaliknya. Akhirnya, tatasusunan yang ditapis adalah hasil yang kami perlukan.

Kes guna:

$data = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'Jerry', 'age' => 18],
    ['name' => 'Andy', 'age' => 22],
    ['name' => 'John', 'age' => 25]
];

$remove = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'John', 'age' => 25]
];

$result = removeArray($data, $remove);

print_r($result);
Salin selepas log masuk
Salin selepas log masuk

Hasil keluaran:

Array
(
    [1] => Array
        (
            [name] => Jerry
            [age] => 18
        )

    [2] => Array
        (
            [name] => Andy
            [age] => 22
        )

)
Salin selepas log masuk
Salin selepas log masuk

Kaedah 2: Gunakan fungsi array_udiff

Kaedah lain ialah menggunakan fungsi array_udiff . Fungsi ini digunakan untuk mengira perbezaan set tatasusunan Ia boleh menyesuaikan fungsi panggil balik untuk membandingkan tatasusunan untuk mencapai fungsi yang diperlukan.

Pelaksanaan khusus adalah seperti berikut:

function removeArray($arr, $remove)
{
    return array_udiff($arr, $remove, function ($a, $b) {
        return ($a == $b) ? 0 : 1;
    });
}
Salin selepas log masuk

Dalam kod di atas, kami serupa dengan kaedah 1 dan mentakrifkan fungsi bernama removeArray. Fungsi ini menerima dua parameter, $arr dan $remove, yang masing-masing mewakili set tatasusunan yang mana tatasusunan perlu dialih keluar dan set tatasusunan yang perlu dialih keluar.

Kami menggunakan fungsi array_udiff untuk membandingkan tatasusunan $arr dan tatasusunan $remove, laksanakan fungsi tersuai, bandingkan elemen dalam tatasusunan dan kembalikan hasilnya.

Kes penggunaan:

$data = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'Jerry', 'age' => 18],
    ['name' => 'Andy', 'age' => 22],
    ['name' => 'John', 'age' => 25]
];

$remove = [
    ['name' => 'Tom', 'age' => 20],
    ['name' => 'John', 'age' => 25]
];

$result = removeArray($data, $remove);

print_r($result);
Salin selepas log masuk
Salin selepas log masuk

Hasil keluaran:

Array
(
    [1] => Array
        (
            [name] => Jerry
            [age] => 18
        )

    [2] => Array
        (
            [name] => Andy
            [age] => 22
        )

)
Salin selepas log masuk
Salin selepas log masuk

Ringkasnya, terdapat dua cara untuk menghapuskan tatasusunan tertentu daripada tatasusunan dua dimensi Pertama, gunakan fungsi array_filter dan fungsi array_udiff masing-masing. Kedua-duanya adalah kaedah yang biasa digunakan, dan yang mana satu untuk digunakan bergantung pada keperluan anda.

Perlu diambil perhatian bahawa jika sub-array yang sama wujud dalam tatasusunan, kaedah satu (array_filter) tidak berfungsi dengan baik, kerana tatasusunan tidak boleh dibandingkan secara langsung dalam PHP dan fungsi array_diff_assoc perlu digunakan.

Atas ialah kandungan terperinci Bagaimana untuk memadam subarray tertentu dalam tatasusunan dua dimensi dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan