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

Bagaimana untuk memadam subarray tertentu dalam tatasusunan dua dimensi dalam php

PHPz
PHPzasal
2023-04-20 13:51:46701semak imbas

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);
    });
}

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);

Hasil keluaran:

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

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

)

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;
    });
}

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);

Hasil keluaran:

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

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

)

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!

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