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

Cari persilangan tatasusunan dua dimensi dalam php

WBOY
WBOYasal
2023-05-07 17:47:08958semak imbas

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

Hasil output ialah:

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

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

Hasil output ialah:

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

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!

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