0

配列を適切にグループ化するにはどうすればよいですか:(最終結果)

Array
(
    [0] => Array
        (
            [Player] => CaLvErT
            [0] => Array
                (
                    [SnapTime] => 1330028992
                    [PlayCount] => 9
                )
        )
    [1] => Array
        (
            [Player] => CaLvErT
            [0] => Array
                (
                    [SnapTime] => 1330202828
                    [PlayCount] => 8
                )
        )
)

私のmySQL/PHPは、私が試したものと一致します。

        $iTestGrid = array();
        $ChartSQL = "SELECT player,snap,count(*) AS pCnt";
        $ChartSQL .= " FROM sc".$DBSvr;
        $ChartSQL .= " WHERE hex(alliance) IN (hex('Twitch'))";
        $ChartSQL .= " GROUP BY player,snap";
        $ChartSQL .= " ORDER BY player ASC,snap ASC";
        $FinalResult = $db-> query($ChartSQL);
        while ($FinalRow = $db-> fetch_assoc($FinalResult)){
           $iTestGrid[] = array(
            'Player' => $FinalRow['player'],
            array(
                'SnapTime' => (int)$FinalRow['snap'],
                'PlayCount' => (int)$FinalRow['pCnt']
            )
           );
        }

基本的に、同じ名前のプレーヤーをグループ化する方法を知りたいと思っていました。

よろしくお願いします!(私はアレイがどのように機能するかを完全に理解することに熱心ではなく、昼夜を問わず本屋を通り抜け、それでもその一部を手に入れていますが、全部ではありません)

4

2 に答える 2

2

私が正しく理解しているなら、あなたはそのようなものが欲しいです。プレーヤー名をグループ化のキーとして使用し、再生回数/タイムスタンプの値を同じ配列にプッシュできます。

<?php 
    $iTestGrid = array();
    $ChartSQL = "SELECT player,snap,count(*) AS pCnt";
    $ChartSQL .= " FROM sc".$DBSvr;
    $ChartSQL .= " WHERE hex(alliance) IN (hex('Twitch'))";
    $ChartSQL .= " GROUP BY player,snap";
    $ChartSQL .= " ORDER BY player ASC,snap ASC";
    $FinalResult = $db-> query($ChartSQL);

    while ($FinalRow = $db-> fetch_assoc($FinalResult)){

        if(!isset($iTestGrid[$FinalRow['player']]))
            $iTestGrid[$FinalRow['player']] = array();

        $iTestGrid[$FinalRow['player']][] = 
        array(
            'SnapTime' => (int)$FinalRow['snap'],
            'PlayCount' => (int)$FinalRow['pCnt']
        );
    }

    var_dump($iTestGrid);
于 2012-05-05T06:50:46.940 に答える
0

player names を配列キーとして使用し、その配列内に他のデータを挿入することもできます。

$sorted = array();
foreach ( $result as $value ) {
    $sorted[ $value['Player'] ] = $value[ 0 ];
}
var_dump( $sorted );
于 2012-05-05T07:02:56.603 に答える