Rumah >pembangunan bahagian belakang >masalah PHP >Bagaimana untuk mengalih keluar pendua daripada tatasusunan dua dimensi php

Bagaimana untuk mengalih keluar pendua daripada tatasusunan dua dimensi php

PHPz
PHPzasal
2023-04-27 15:54:232087semak imbas

Dalam PHP, tatasusunan dua dimensi merujuk kepada tatasusunan yang mengandungi pelbagai tatasusunan, iaitu unsur-unsur dalam tatasusunan ialah tatasusunan adalah seperti berikut:

$students = array(
    array('id' => 1, 'name' => '张三', 'age' => 18),
    array('id' => 2, 'name' => '李四', 'age' => 19),
    array('id' => 3, 'name' => '王五', 'age' => 20),
    array('id' => 4, 'name' => '张三', 'age' => 18)
);

Dalam tatasusunan dua dimensi, kita mungkin menghadapi Untuk menduplikasi elemen, dalam kes ini, kita perlu mengalih keluar pendua. Jadi, bagaimana untuk membuang berat badan?

Kaedah 1: Gunakan fungsi array_unique

Fungsi array_unique boleh mengalih keluar nilai pendua dalam tatasusunan, tetapi ia hanya boleh digunakan untuk tatasusunan satu dimensi, jadi ia perlu diproses pada tatasusunan dua dimensi. Idea khusus adalah seperti berikut:

Kita boleh lelaran melalui setiap sub-tatasusunan dalam tatasusunan dua dimensi, menukarnya kepada rentetan dan menyimpannya kepada tatasusunan baharu. Kemudian, tatasusunan baharu dinyahduplikasi, dan hasil akhir ialah tatasusunan dua dimensi yang dinyahduplikasi.

Kod dilaksanakan seperti berikut:

function unique_array($array) {
    $temp = array();
    foreach ($array as $key => $value) {
        $temp[$key] = implode(',', $value);
    }
    $temp = array_unique($temp);
    $result = array();
    foreach ($temp as $key => $value) {
        $result[$key] = explode(',', $value);
    }
    return $result;
}

$students = array(
    array('id' => 1, 'name' => '张三', 'age' => 18),
    array('id' => 2, 'name' => '李四', 'age' => 19),
    array('id' => 3, 'name' => '王五', 'age' => 20),
    array('id' => 4, 'name' => '张三', 'age' => 18)
);

$result = unique_array($students);
print_r($result);

Hasil output adalah seperti berikut:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 张三
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => 李四
            [age] => 19
        )

    [2] => Array
        (
            [id] => 3
            [name] => 王五
            [age] => 20
        )

)

Kaedah 2: Gunakan fungsi array_reduce

fungsi array_reduce boleh bergabung tatasusunan dua dimensi ke dalam tatasusunan satu dimensi dan lakukan operasi penyahduplikasian padanya. Idea khusus adalah seperti berikut:

Kita boleh menukar setiap sub-tatasusunan dalam tatasusunan dua dimensi kepada rentetan dan menyimpannya kepada tatasusunan baharu. Kemudian, gunakan fungsi array_reduce untuk menggabungkan tatasusunan baharu menjadi rentetan dan gunakan fungsi array_unique untuk menyahduplikasi rentetan. Akhir sekali, gunakan fungsi letupan untuk menukar rentetan penduaan kepada tatasusunan dua dimensi.

Kod tersebut dilaksanakan seperti berikut:

function unique_array($array) {
    $temp = array();
    foreach ($array as $key => $value) {
        $temp[$key] = implode(',', $value);
    }
    $result = array_reduce($temp, function($carry, $item){
        if (!in_array($item, $carry)) {
            $carry[] = $item;
        }
        return $carry;
    }, array());
    $result = array_map(function($item) {
        return explode(',', $item);
    }, $result);
    return $result;
}

$students = array(
    array('id' => 1, 'name' => '张三', 'age' => 18),
    array('id' => 2, 'name' => '李四', 'age' => 19),
    array('id' => 3, 'name' => '王五', 'age' => 20),
    array('id' => 4, 'name' => '张三', 'age' => 18)
);

$result = unique_array($students);
print_r($result);

Hasil output adalah seperti berikut:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => 张三
            [age] => 18
        )

    [1] => Array
        (
            [id] => 2
            [name] => 李四
            [age] => 19
        )

    [2] => Array
        (
            [id] => 3
            [name] => 王五
            [age] => 20
        )

)

Ringkasan

Di atas adalah dua kaedah penyahduplikasian tatasusunan dua dimensi dalam PHP. Kedua-dua kaedah menggunakan fungsi terbina dalam PHP, dan idea pelaksanaan khusus adalah agak mudah. Perlu diingatkan bahawa apabila menggunakan fungsi array_reduce, anda perlu menggunakan fungsi array_map untuk menukar rentetan deduplikasi kepada tatasusunan dua dimensi.

Atas ialah kandungan terperinci Bagaimana untuk mengalih keluar pendua daripada tatasusunan dua dimensi 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