Rumah > pembangunan bahagian belakang > masalah PHP > Cari persilangan tatasusunan dua dimensi dalam php

Cari persilangan tatasusunan dua dimensi dalam php

WBOY
Lepaskan: 2023-05-07 17:47:08
asal
1070 orang telah melayarinya

Dalam pengaturcaraan PHP, tatasusunan dua dimensi ialah salah satu daripada struktur data yang kerap digunakan. Salah satu operasi yang paling biasa digunakan pada tatasusunan dua dimensi ialah mencari persimpangan. Jadi, bagaimana untuk mencari persilangan tatasusunan dua dimensi dalam PHP? Mari kita lihat pelaksanaan khusus.

1. Gunakan fungsi array_intersect

PHP menyediakan fungsi terbina dalam array_intersect(), yang boleh digunakan untuk mencari persilangan dua tatasusunan. Fungsi ini boleh menerima berbilang tatasusunan sebagai parameter Untuk tatasusunan dua dimensi, anda perlu menggunakan fungsi peta tatasusunan untuk menukar tatasusunan bersekutu kepada tatasusunan indeks.

Kod sampel adalah seperti berikut:

$arr1 = array(
    array('id'=>1,'name'=>'Tom'),
    array('id'=>2,'name'=>'Jack'),
    array('id'=>3,'name'=>'Lucy'),
);

$arr2 = array(
    array('id'=>2,'name'=>'Jack'),
    array('id'=>4,'name'=>'Mike'),
    array('id'=>5,'name'=>'Lily'),
);

$intersect = call_user_func_array('array_intersect', array_map(function($ar){return array_values($ar);},array($arr1, $arr2)));

var_dump($intersect);
Salin selepas log masuk

Hasil output ialah:

array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    int(2)
    ["name"]=>
    string(4) "Jack"
  }
}
Salin selepas log masuk
Salin selepas log masuk

2. Gunakan fungsi tersuai

Selain fungsi terbina dalam , kita juga boleh menggunakan fungsi fungsi tersuai untuk melaksanakan fungsi mencari persilangan tatasusunan dua dimensi. Berikut ialah pelaksanaan mudah:

/**
 * 求二维数组交集
 * @param $arr1
 * @param $arr2
 * @return array
 */
function arr_intersect($arr1, $arr2){
    $intersect = array();
    foreach($arr1 as $value1){
        foreach($arr2 as $value2){
            if($value1 == $value2){
                $intersect[] = $value1;
                break;
            }
        }
    }
    return $intersect;
}

$arr1 = array(
    array('id'=>1,'name'=>'Tom'),
    array('id'=>2,'name'=>'Jack'),
    array('id'=>3,'name'=>'Lucy'),
);

$arr2 = array(
    array('id'=>2,'name'=>'Jack'),
    array('id'=>4,'name'=>'Mike'),
    array('id'=>5,'name'=>'Lily'),
);

$intersect = arr_intersect($arr1, $arr2);

var_dump($intersect);
Salin selepas log masuk

Hasil output ialah:

array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    int(2)
    ["name"]=>
    string(4) "Jack"
  }
}
Salin selepas log masuk
Salin selepas log masuk

Ringkasan

Kendalian persilangan tatasusunan dua dimensi adalah sangat biasa dalam pengaturcaraan PHP. Dengan menggunakan fungsi terbina dalam PHP array_intersect() atau fungsi tersuai, kita boleh melaksanakan fungsi persilangan tatasusunan dua dimensi dengan mudah. Dalam projek sebenar, kita harus memilih kaedah optimum mengikut senario tertentu untuk melaksanakan algoritma persilangan yang pantas dan boleh dipercayai.

Atas ialah kandungan terperinci Cari persilangan 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