Выполнение действия при нахождении одинаковых значений в двух массивах PHP - PullRequest
2 голосов
/ 11 января 2010

У меня есть два ассоциативных массива в PHP, которые определены следующим образом:

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

и

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

Теперь вот мой вопрос: как я могу пройти через эти два массива и выполнить действие, если в одном массиве есть какой-либо идентификатор песни, который можно найти в другом?

Цикл for () не работает, потому что могут быть общие песни для обоих массивов, но не для одного индекса массива.

Любая помощь приветствуется.

Ответы [ 3 ]

1 голос
/ 11 января 2010

Эффективный способ сделать это - просто изменить первую строку последнего фрагмента следующим образом:

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

После этого вы можете использовать простой цикл for следующим образом:

for ($this_week as $item) {
    if ( isset ($last_week[ $item["top_song_id"] ]) ) {
        // HERE YOU HAVE FOUND A DUPLICATE
    }
}
0 голосов
/ 11 января 2010

Почему бы просто не жестко закодировать 5 (?) Сравнений, которые вам нужны, в одном операторе if? Не нужно слишком усложнять вещи.

0 голосов
/ 11 января 2010
if( in_array( $this_week["top_song_id"], $last_week ) ) {
    //do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...