2012-05-08 3 views
0

私は先日この質問をしましたが、あまりにも漠然としていたので削除しました。申し訳ありませんが説明が長い場合、私はこの時間に意味があることを確認したいと思います。12個のPHP変数のテーブルをソートし、ページの負荷を最低5に制限する

私は、drupalで実行されているフィットネステストのスコアを示すフィットネスウェブサイトを持っていますので、mysqlとphpを使用しています。

このサイトには、Trianablesという機能もあります。訓練可能なものはスピードとパワーのようなあなたが仕事をすることができ、あなたのスポーツをより良くするのに役立ちます。トータルで12のトレーナブルがあります。

データベースからの1つ以上のフィットネステストの結果を選択するphpコードで計算された各トレーナブルの得点があります(トレーナブルに応じて)。データベース内の他のアスリートと比較してランク付けし、 1-5の数字に、1は選手の最低20%、5は選手の上位20%です。次にこの数値をPHP変数に格納して、ページの別の領域に配置することができます。私は通常、次のようなコードを使って画像を作成します。

echo "<img src='http://example.com/images/score$Balance.png'>"; 

この例では、score4.pngというイメージが表示されます。私はscore1.png-score5.png

私は訓練可能なスコアをページ内の別のタブに表示しますが、私がしたいのは、最初のタブに1つのスコア2つのステップ)と1つ1つのエクササイズで、5つの最も重要なエクササイズを改善することができます。

これは最低数から最高にそれらをランク付けし、すべての12個の変数(各トレーニング可能なため1)を取り、スクリプトを必要とし、その後最低5

はでこれを行うための最善の方法であるだけで出力します配列?私は、私は以下のコードのような表形式で表示されるデータを欲しいと思います最後に、このコード

<?php 

$worsttrains=array($trainable1, $trainable2, $trainable3, $trainable4, $trainable5, $trainable6, $trainable7, $trainable8, $trainable9, $trainable10, $trainable11, $trainable12); 

asort($worsttrains, SORT_NUMERIC); 
$worst5trains=array_slice($worsttrains, 0, 5, true); 

foreach ($worst5trains as $a) 

echo " ".$a ; 

echo "<br>"; 


?> 

を使用してために、最低5つの数字を吐き出すために配列を使用する方法を考え出したが、私は必要としていますscore列の変数でソートされたコードでは、その行(trainableとexercise)に他の情報を入れて、最低の変数を持つ5行だけを表示する必要があります。これは配列で可能ですか、またはjqueryのようなものを見る必要がありますか?

<table> 
<tr> 
    <th>Trainable</th> 
    <th>Score</th> 
    <th>Exercise</th> 
</tr> 
<tr> 
<td>Balance</td> 
<td>$balance</td> 
<td>Balance Board Squat</td> 
</tr> 
<tr> 
<td>Lower Strength</td> 
<td>$lowerstrength</td> 
<td>Squats</td> 
</tr> 
<tr> 
<td>Lower Power</td> 
<td>$lowerpower</td> 
<td>Forward Jump Squats</td> 
</tr> 
<tr> 
<td>Lower Quickness</td> 
<td>$lowerquickness</td> 
<td>Skater Hop</td> 
</tr> 
<tr> 
<td>Reaction Time</td> 
<td>$reactiontime</td> 
<td>4 Corner Listen</td> 
</tr> 
<tr> 
<td>Brakes</td> 
<td>$brakes</td> 
<td>Monger Hop</td> 
</tr> 
<tr> 
<td>Upper Quickness</td> 
<td>$upperquickness</td> 
<td>Light Ball Toss</td> 
</tr> 
</table> 

テーブルで行うよりも簡単な場合はdivを使用することもできます。

明確にする必要がある場合は、これが理にかなってほしいと願います。

+0

なぜ、HTMLテーブルを生成するコードを 'foreach'配列に入れることができないのですか?あなたが興味を持っている5つの値を取得する方法をすでに理解しているようです。 – Daan

+0

それは私にとっては最も単純な解決策であるように見えましたが、私はこのコードをあまりにも長く長く見て過ごしたと思います。どのようにして各行が他の値を持っているようにするか 行1を意味 はバランス、$変数、バランス運動 行2が、彼らはそれでそれらの他の2つの列を運ぶには、それが変数を置くどのような順序ので、どんなに反応、$変数、反応運動 だろうだろう。 私はこれを考える上だからたぶん私は意味がありませんか? – Griff

答えて

0

私は、これはあなたが探しているものだと思う:

<?php 
$arr = array(
    array(0 => "trainable",1=>100,2=>"exercise"), 
    array(0 => "balance",1=>50,2=>"balance board squat"), 
    array(0 => "lower strength",1=>200,2=>"squats") 
); 

foreach ($arr as $key => $row) { 
    $score[$key] = $row[1]; 
} 

array_multisort($score, SORT_ASC, $arr); 

print_r($arr); 
?> 

出力:

Array 
(
    [0] => Array 
     (
      [0] => balance 
      [1] => 50 
      [2] => balance board squat 
     ) 

    [1] => Array 
     (
      [0] => trainable 
      [1] => 100 
      [2] => exercise 
     ) 

    [2] => Array 
     (
      [0] => lower strength 
      [1] => 200 
      [2] => exercise 
     ) 

) 

、必要に応じて、あなたは、スプライスすることができ、その後、あなたは、テーブルを印刷することができました。もちろん、最初の配列($arr)に12個のエクササイズを追加することもできます。

+0

応答に時間を割いてくれてありがとう、本当に感謝しています。私は実際には、PHPのウェブサイトを掘り下げ、別のコードを見てから昨日、この正確な答えを昨日思いついた。これは、私のコードが正しいことを確認し、大きなハックの仕事ではありませんので、ありがとうございます!私はこれを答えとしてマークしています。 – Griff

関連する問題