0

私はUNITYを使用してゲームを作成しています。それはPHPblablaでした...行を並べ替えるために理解する必要のある小さなことがいくつかあります。事は-それは私がプレーヤーを分類する必要があるゲームです。たとえば、プレーヤー3がゲームを離れる/離れた場合、プレーヤー3はuid2を持ちます。

その場合、プレイヤー1とプレイヤー2、プレイヤー4のみが013になります。

player1 = 0
player2 = 1
player3 = 2
player4 = 3

だから私がする必要があるのはそれを分類することですそれでplayer3 left uid 2 私が分類をする必要があるならそれはこのように行くでしょう

player4 = 3
player2 = 1
player1 = 0

私は使用しましたsort( $row = mysql_fetch_array( $sql ) )が、エラーが発生しただけです。これも使用しsort( $row['players'] ); $row['players']ました0 1 2 3 が、必要なものは並べ替えられませんでしたが、その出力はこれです

player1 = 3
player2 = 1
player4 = 0

これは間違っていますが、プレイヤーと現在のプレイヤーにとって今は等しくありません

正しいコードを教えてください

私がここで解決する必要があることを皆さんが理解してくれることを願っています。

私もORDERBYプレイヤーDESCを使おうとしていますが、良くありません。そのためにもっと具体的な順序があることを私は知っています。

これは私が解決する必要のある順序/並べ替えです。

GameID   Turn   
3         2
6         1
7         2
5         2
8         0
9         1

return should be { for example GameID 6 is TURN for the Game or Left in the Game }
GameID   Turn
6         1
9         1
8         0
3         2
5         2
7         2

another example { for example GameID 7 is TURN for the Game or Left in the Game }
GameID   Turn
7         2
3         2
5         2
8         0
9         1
6         1

これが私のクエリです

$email_val = email@sample.com';

if( $email_val != null ){
    $sqlCheckError = mysql_query( "SELECT * FROM game WHERE player1 = '".$email_val."' || player2 = '".$email_val."' || player3 = '".$email_val."' || player4 = '".$email_val."' " ) or die ( mysql_error() );
    $gameCheck = mysql_fetch_array($sqlCheckError);
    // CHECK FOR GAMEID ERROR
    $gameIDCheck = $gameCheck['gameID'];
    // EMAIL EQUAL TO THE CURRENTTURN WHERE ID
    $sql = mysql_query( "SELECT * FROM game WHERE player1 = '" . $email_val . "' || player2 = '".$email_val."' || player3 = '".$email_val."' || player4 = '".$email_val."' " ) or die ( mysql_error() );
    // FIXED THE SORT OF 
    while ( $row = mysql_fetch_array( $sql ) ) {                
        $p1 = $row['player1'];
        $p2 = $row['player2'];
        $p3 = $row['player3'];
        $p4 = $row['player4'];

        if ($asterisk > 0) {
            echo "*";
        }
        echo $row['gameID'] . '|';
        echo $row['gameStatus'] . '|';

        echo $getNameLower->_NAME_LOWER_PLAYER_ONE_( $p1 );
        echo $getNameLower->_NAME_LOWER_PLAYER_TWO_( $p2 );

        if ( !empty( $p3 ) ){
            echo $getNameLower->_NAME_LOWER_PLAYER_THR_( $p3 );
        } else {
            echo '';
        }
        if ( !empty( $p4) ){
            echo $getNameLower->_NAME_LOWER_PLAYER_FOU_( $p4 );
        } else {
            echo '';
        }

        echo '|' . $row['start'];
        echo '|' . $row['currentTurn'];
        echo '|' . $row['lastWord'];
        echo '|' . $row['lastPlayer'];
        echo '|' . $row['lastPoints'];

        $cur = $row['currentTurn'];
        // CHECK THE CurrentTurn then PUT IT AS PICURL
        if ( $cur == '0' ) { echo $getPIC->purl_1( $p1 ); } 
        elseif( $cur == '1' ) { echo $getPIC->purl_2( $p2 ); }
        elseif( $cur == '2' ) { echo $getPIC->purl_3( $p3 ); }
        elseif( $cur == '3' ) { echo $getPIC->purl_4( $p4 ); }

        $asterisk++;
    }

    if( $gameIDCheck == null ){
        echo '0';           
    }
}
else{
    echo '0';
}

はい、そもそもそう思います。Order Byは、すべてを並べ替えるのが本当に簡単です。しかし、この2 0 1のようなものはソートされない1 2 0ため、ORDER BY DESC 210とASC01 2を使用する場合は、今すぐ明確になることを願っています。

4

2 に答える 2

0

うん。ORDER BY DESC を使用してクエリ自体で並べ替えを実行します..これにより、作業が楽になります..

于 2012-08-31T09:44:34.230 に答える
0

http://www.php.net/manual/en/function.asort.phpを使用して、インデックスの関連付けを保持してみてください。

于 2012-08-31T09:37:37.957 に答える