2012-02-28 17 views
0

私はユニークなプレイリストを作成しようとしています。私のDB構造があることについて...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数のアルバムがトラック-1などの名前のSIDで、曲の任意の番号を持っているかもしれないが、それはそれのようなユニークなアーティストと区別されるたびにで歌われるように私がデュエットで歌っているのであれば、私は:と区別しているよりも、このアーティストのコンビネーションもこれを歌いました。今は挿入時に既に存在するかどうかを確認したいと思います。私のPHPコードは、それが私に

-TRUE 
-TRUE 
-TRUE 
-FALSE 

を返す必要がありますが、そのが偽たびに私を返す組み合わせ

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

について

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

です。私を助けてください。

+0

'$のtrack'配列には何ですか? –

+0

'$ album_array'と比較したい値のグループ – Tisha

+0

あなたのような値の例は、アルバムの値が役に立つかもしれないことを示しています。 –

答えて

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

は、あなたが最初のアレイ$album_array[0]に対してチェックされている

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

でなければなりません。返されたのは1つだけですか?

コードページの例:http://codepad.org/lE8eUBHY

+0

その同じ応答を報告しています... – Tisha

+0

@ティシャは、あなたがそれをデバッグするのを助けるために各条件をエコーし​​ようとします。 –

+0

ここに多次元配列を作成しています。これは '$ album_array [$ key] [0 | 1]'それぞれのridとsidが割り当てられ、テーブルとしてフェッチしているときに文字列になります。 – Tisha