2010-01-10 36 views
2

找到相同的值时,执行操作我在PHP两种缔合数组,其定义如下:在两个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()循环不起作用,因为两个数组可能有共同的歌曲,但不在同一个数组索引上。

任何帮助表示赞赏。

回答

0
if(in_array($this_week["top_song_id"], $last_week)) { 
    //do something 
} 
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 
    } 
} 
0

为什么不只是硬编码5(?)比较你需要在一个if语句?无需过分复杂的事情。