-1

これはかなり単純なことだとしか想像できませんが、それでも解決策はわかりません。

次の変数があるとします。

$group1 = "5";
$group2 = "1";
$group3 = "15";
$group4 = "3";
$group5 = "7";
$group6 = "1";
$group7 = "55";
$group8 = "0";
$group9 = "35";

金額が最も高いグループを最初にリストする必要があります。例:

Group 7 is number 1 with 55.
Group 9 is number 2 with 35.
Group 3 is number 3 with 15.
Group 5 is number 4 with 7.
Group 1 is number 5 with 5.
Group 4 is number 6 with 3.
Group 2 is number 7 with 1.
Group 6 is number 8 with 1.
Group 8 is number 9 with 0.

おそらく、すべてのデータを double-array にリストしてから並べ替える方が簡単でしょうか?

4

6 に答える 6

1

まず、配列を使用します(通常のaray)。

配列する場合

$group = array(1 => 5, 2 => 1 ... )

関数を使用できarsortます。

ここでは、文字列ではなく数字を使用しています。(値に)文字列を使用する場合は、sort(SORT_NUMERIC)のフラグが必要です。

PHPマニュアルの詳細

次に、foreach

foreach($group as $key => $value){
    $key is number of varaiable
    $value is value of it.
    you also may add counter to print 1,2,3...
}
于 2013-02-27T10:38:42.230 に答える
1

この目的のためにアレイを使用する

$group[1] = "5";
$group[2] = "1";
$group[3] = "15";
$group[4] = "3";
$group[5] = "7";
$group[6] = "1";
$group[7] = "55";
$group[8] = "0";
$group[9] = "35";

そしてそれをソートします。

arsort($group, SORT_NUMERIC);   // SORT_NUMERIC suggested by **fab**
于 2013-02-27T10:39:17.507 に答える
1

連想配列内にデータを配置し、連想認識ソートでソートするだけです。

$groups = array(
'group1' => "5",
'group2' => "1",
'group3' => "15",
'group4' => "3",
'group5' => "7",
'group6' => "1",
'group7' => "55",
'group8' => "0",
'group9' => "35",
);

arsort($groups);

// iteration as usual
foreach ($groups as $group_name => $value) {
}

// getting elements with the array functions based around the array's internal pointer
reset($groups); // reset the pointer to the start
print key($groups); // the first element's key
print current($groups); // the first element's value
next($groups); // moving the array to the next element
于 2013-02-27T10:42:12.617 に答える
0

グループを配列に入れます

$groups = array("5","1","15","3","7","1","55","0","35");
arsort($groups); //This sort the array is descending order

var_dump($sorted_groups);

配列を自分の形式で印刷するには、次の関数を使用します

count = 1;
foreach($groups as $key => $value) {
    echo "Group ".($key+1)." is number ".$count++." with ".$value;
}
于 2013-02-27T10:38:17.960 に答える
0

はい、配列を使用するのが最善の方法です。そんな感じ

$group[1]="5";
$group[2]="1";

その後、配列をソートできます

于 2013-02-27T10:37:16.307 に答える
0

これを行う最善の方法は、配列とarsort. これにより、インデックスがそのまま維持されます。

arsortブール値を返すため、新しい変数に代入しないでください

$groups = array("5","1","15","3","7","1","55","0","35");
arsort($groups, SORT_NUMERIC);

$i = 1;

foreach ($groups as $key => $val) {
    echo 'Group ' . $key . ' is number ' . $i . ' with ' . $val;
    $i++;
}
于 2013-02-27T10:41:50.500 に答える