Iki PHP dizide aynı değerleri bulmak bir eylemi gerçekleştirme

2 Cevap php

Ben aşağıdaki gibi tanımlanır PHP iki birleştirici diziler var:

$this_week[] = array(
        "top_song_id" => $row["view_song_id"],
        "top_place" => $i, 
        "top_move" => "0",
        "top_last" => $i,
        "top_peak" => $i,
        "top_rating" => get_song_rating_by_id($row["view_song_id"]),
        "top_views" => $row["view_sum"],
        "top_start" => $monday,
        "top_end" => $sunday         
        );

ve

$last_week[] = array(
        "top_song_id" => $row["view_song_id"],
        "top_place" => get_song_place_by_id($row["view_song_id"]), 
        "top_move" => "0",
        "top_last" => get_song_last_by_id($row["view_song_id"]),
        "top_peak" => get_song_peak_by_id($row["view_song_id"]),
        "top_rating" => get_song_rating_by_id($row["view_song_id"]),
        "top_views" => $row["view_sum"],
        "top_start" => $prev_monday,
        "top_end" => $prev_sunday            
        );

Now here is my question: how can I traverse this two arrays veperform an action if there is any song id in one array that can be found in the other one?

Aynı dizi endeksi orada iki dizide için ortak şarkılar olabilir ama olamaz çünkü A için () döngü çalışmıyor.

Herhangi bir yardım takdir edilmektedir.

2 Cevap

Bunu yapmak için etkili bir yoldur, sadece bu şekilde son pasajının ilk satırı değiştirin:

$last_week[$row["view_song_id"]] = array(    // Added the song id as the array index
    "top_song_id" => $row["view_song_id"],
...

Bundan sonra döngü için bu şekilde bir basit kullanabilirsiniz:

for ($this_week as $item) {
    if ( isset ($last_week[ $item["top_song_id"] ]) ) {
        // HERE YOU HAVE FOUND A DUPLICATE
    }
}

Neden sadece bir deyimi eğer ihtiyaç duyduğunuz 5 (?) Karşılaştırmalar kodlamalısınız değil? Şeyleri overcomplicate gerek yok.