PHP中的多维数组处理

时间:2012-02-28 17:55:10

标签: php

我正在尝试创建唯一的播放列表。关于我的数据库结构是......

aid (albumid)    |    sid (songid)    |    rid (artistid)
_________________|____________________|___________________

5001             |    track-a         |    a    
5002             |    track-a         |    c    
5001             |    track-a         |    a:b
5001             |    track-a         |    b
5001             |    track-a         |    b:c
5001             |    track-b         |    b
5001             |    track-b         |    b:a

就像这张5001号专辑可能有任意数量的歌曲,名称sid为track-1,但每次都是独特的艺术家,如艺术家a,b,c演唱,如果它是由二重唱演唱而不是我将它与:区分开来,这些艺术家组合也曾唱过这个。现在在插入时我希望检查组合是否已经存在。我的PHP代码是

$track is array of track
$artist is array of artist (for artist combination array value may have ":", I have taken it as string.)
//SELECT QUERY FOR ALBUM
if (mysql_num_rows($sql) != 0) {
        while ($row = mysql_fetch_assoc($sql)) {
            $album_array[] = array( $row["sid"], $row["rid"]);
        }
    for ($z = 0; $z < count($track); $z++) {
    if( in_array($track["z"],$album_array[0]) && empty(array_diff(explode(":",$album_array[1]), explode(":",$artist["z"]) )) ){
       echo 'true';
    } else {
       echo 'false';    
    }
}

} else {
 //SIMPLE INSERT CODE HERE
}

组合

  track-a    |    a
  track-a    |    b
  track-a    |    b:a
  track-a    |    a:c

它应该归还我

-TRUE
-TRUE
-TRUE
-FALSE

但每次都让我失意。请帮帮我。

1 个答案:

答案 0 :(得分:0)

$track["z"] and $artist["z"]

应该是

$track[$z] and $artist[$z]

您只是检查第一个数组$album_array[0]。只有一个退回吗?

代码页示例:http://codepad.org/lE8eUBHY