Pages

Tuesday, March 27, 2018

PHP - Tìm 2 elements giống nhau trong mảng

Hôm ni đọc một câu hỏi phỏng vấn, khá dzui. Tìm 2 elements giống nhau trong một array.
Giả sử ta có mảng (array) sau:

$mang = array(1, 4, 5, 3, 5, 7, 4);


Phân tích, nhìn thì thấy có 2 elements là 4 và 5 là trùng nhau.

Vậy ta cần duyệt qua mảng và đối chiếu từng yếu tốt/thành phần trong mảng.

Để duyệt mảng tuần tự ta dùng for, mảng bất tuần tự (key chứa string), ta dùng foreach.

Đầu tiên ta đếm xem có bao nhiêu thành phần trong mảng: $b = count($mang); //trả về 7

Giả sử cần tìm số lớn nhất thì đây: echo "số lớn nhất trong mảng: ".max($mang)."<br>";

Giờ ta duyệt qua mảng như sau:


for ($i=0; $i < $b; $i++) { 

    for ($j = $i+1; $j < $b; $j++) {

            if($mang[$i]==$mang[$j]){

            echo "số trùng là:".$mang[$i]."<br>";
            }       
    }

}   

Lưu ý là ta cần duyệt 2 lần, một lần cho thành phần trong mảng và lần còn lại cho các thành phần khác. Lưu ý $j = $i + 1;

Code trên trả về 4 và 5.

Trong khi đó, so sánh giữa 2 mảng dùng array_intesect(), như code sau:

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");

$a2=array("e"=>"red","f"=>"green","g"=>"blue"); $result=array_intersect($a1,$a2);

print_r($result); //Array ( [a] => red [b] => green [c] => blue )

No comments:

Post a Comment