我在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 :(得分: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(?)比较?无需过度复杂化。