2011-10-23 8 views
0

データベースからしばらくの間、配列に値を入れています。今度は、次のIDがちょうど出力されたものと同じであるかどうかをチェックすることはしません。それが私の考えではない場合、IDを配列の中に入れることです。内部のMySQLステートメントの次の値を取得中

これを行う可能性はありますか?しばらくの間、クエリの次の出力をチェックするには?

$result = mysql_query("SELECT * FROM $postmeta ORDER BY post_id ASC") 
or die(mysql_error()); 

$basArray = array();  

while($row = mysql_fetch_array($result)) { 

    $innerArray[$row['meta_key']] = $row['meta_value'];  
    $basArray[$row['post_id']] = $innerArray; 
// Above post_id I want to check if it is the same as the "next coming" 

} 

挨拶

答えて

0

私は通常ちょうど変数の中で最も最近のIDを格納し、whileループの先頭にそれをチェックします。擬似コードでは、次のように:あなたは本当に行で何が起こるかに応じて特定の行の動作を変更する必要がある場合

$old_row_id = -1; // any value that can't legitimately appear 
while ($row = fetch_array($result)) { 
    if ($old_row_id == $row['id']) { 
     // logic to follow if IDs are the same 
    } else { 
     // logic to follow if IDs are different 
    } 
    // logic to follow in either case, if any 
    $old_row_id = $row['id']; // update variable for the next run through 
} 

、私はあなたが実際に以下でその変化をもたらすことをお勧めします新しい行IDを古いものと照合してループを実行します。

また、結果セットを2回ループすることもできます。最初に行を2次元配列にすることで、差の行を数値で簡単に参照できるようになります。次に、2番目に、実際には最初にやりたいことを何でもし、[$i]ではなく[$i + 1]を使って "次の行"を参照することができます。 (もちろん、最後の行については注意が必要です。オフセットは[$i + 1]ではありません)

+0

解決策が見つかりました。 array_push関数を使用しました。このコードは、私の作品: しばらく($行=は、mysql_fetch_array($結果)){ \t \t \t場合(!$ idArr = $行[ 'post_idの']){ \t \t \t array_push($ basArray [$ idArr]、$ idArr); \t \t \t \t $ innerArray [$ row ['meta_key']] = $ row ['meta_value']; \t \t \t \t $ basArray [$ row ['post_id']] = $ innerArray; \t \t \t \t $ idArr = $ row ['post_id']; \t} – Fredrik

関連する問題