在两个PHP数组中查找相同值时执行操作

时间:2010-01-10 23:43:31

标签: php arrays

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

现在我的问题是:如果一个数组中有任何歌曲ID可以在另一个数组中找到,我如何遍历这两个数组并执行操作?

for()循环不起作用,因为两个数组都可以有共同的歌曲但不能在同一个数组索引上。

感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

执行此操作的有效方法是以这种方式更改最后一个代码段的第一行:

$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
    }
}

答案 1 :(得分:0)

if( in_array( $this_week["top_song_id"], $last_week ) ) {
    //do something
}

答案 2 :(得分:0)

为什么不在一个if语句中硬编码所需的5(?)比较?无需过度复杂化。