2016-05-28 3 views
0

この表は、製品のキー名、合計値、およびランクの3つの列で構成されています。これらのランクは、合計値に基づいてソートされます。最大の合計値を持つ最初の行の製品名のみをエコーする方法は?最大の価値を持つ最初の行のキーにアクセスする方法は?ここで連想配列の行にアクセスするには?

ランクのテーブルのコード

<table class="table table-bordered table-striped table-hover"> 
    <tr> 
     <th></th> 
     <th>Total</th> 
     <th>Rank</th> 
    </tr> 
    <?php  

    $rank = get_rank($pref); 

    foreach($rank as $key => $value){ 
     echo"<tr>"; 
     echo"<th>$key - $PRODUK[$key]</th>"; 
     echo "<td class='text-primary'>".round($pref[$key], 3)."</td>"; 
     echo "<td class='text-primary'>".$rank[$key]."</td>"; 
     echo "</tr>"; 
     $no++;  
    }        
    ?> 
    </table>   

$キーは、キーと$ PRODUK [キー]は、製品の名前ですされています。そしてその合計金額は$ prefです。

そしてここでは、あなたのコードスニペットで宣言された$PRODUKはありませんGETランク

function get_rank($array){ 
    $pref= $array; 
    arsort($pref); 
    $no=1; 
    $new = array(); 
    foreach($pref as $key => $value){ 
     $new[$key] = $no++; 
    } 
    return $new; 
} 
+0

を助けるかもしれない関数 'get_rank'のポイントは何ですか?配列を並べ替えるのではなく、配列の順序付けされた*コピー*を取得することは可能でしょうか? 'arsort()'を使用せず、 'sort()'と全く同じキーに番号を付けますか? –

+0

'$ PRODUK'と' $ pref'がどのように初期化/生成されるかを示してください。 –

+0

この配列がテーブルを表している場合は、クエリを使用して必要な方法でデータを取得およびソートするだけではないのはなぜか不思議です。 –

答えて

0

の関数のコードです。 $rankforeach($rank as $key => $value)で繰り返しています。キーは$keyで、$rank[$key]のコピーは$valueです。 $valueを代わりに出力するか、質問を明確にし、より多くのコードを提供してください。$PRODUKとその関係は$rankとなります。

2番目のスニペットから、返された配列の値はランクです。つまり、元の配列のキーを表す可能性があります。たとえば、出力することができます。 round($pref[$value])および$PRODUK[$value]。配列は一般的にゼロに基づいているので、ランク0から始める必要があります。ただし、初期化のコードは提供しません。

もう一度:質問に十分な情報がありません。追加した質問へのために

$key = 1; // respective to your code $no=1; 
$value = $rank[$key]; 

あなたはただ一つの要素にアクセスするために、任意のforeachループを必要としない最初の行には、製品の名前のみをエコーする方法

+0

私は上記の私の質問を編集しました。 – rafdwna

0

それはあなた

$rank = get_rank($pref); 
    echo"<tr>"; 
    echo"<th>".key($rank)."</th>"; 
    echo "<td class='text-primary'>".round($pref[key($rank)], 3)."</td>"; 
    echo "<td class='text-primary'>".reset($rank)."</td>"; 
    echo "</tr>";