1

テーブルパーソンがいます。

id, name    product_A  product_B
--  -----   ---------  --------- 
1   Joe        1         4        // result product A + Product B = 5
2   Leo        5         1        // result product A + Product B = 6
3   Lia        2         2        // result product A + Product B = 4

まず、製品 A + 製品 B を数える必要があります。

function count($a,$b){
$total = $a+$b;
return $total;
}

次に、データベースの値を呼び出します

    $count_row = mysql_query("SELECT * FROM person ");
    $result_row= mysql_num_rows($count_row);
$i=0;
$j=0;
$k=0;
    $query = "SELECT * FROM person "
    $result = mysql_query($query) or die ("Query error: " . mysql_error());
    while($row = mysql_fetch_array($result))
        {
          $array_a[$i++]=$row['product_A'];
          $array_b[$j++]=$row['product_B'];
          $array_name[$j++]=$row['name'];
        }
for ($i = 0 ; $i < $count_row ; $i++){
$tot[i] = count($array_a,$array_a);
$array_name[i];
}

// 並べ替え

   function desc($result_row){
    $array = array();
    global $tot;
    for ($n = 0 ; $n <$result_row ; $n++){
        array_push($array,$tot[$n]);
    }
    for($i = 0 ; $i < sizeof($array) ; $i++)
        rsort($array);
                for ($n = 0 ; $n <$result_row ; $n++){
                echo $array_name[$n]."<br>";
                            echo $array[$n]."<br>";
                }
            }

   desc($result_row); 

次に、製品 A + 製品 B の最高値または降順に基づいて名前をエコーし​​たい。「出力 = Leo 、Joe、Lia」。PHPコードでそれを行うにはどうすればよいですか? お願い助けて...

4

4 に答える 4

1

Yoyはこのように試すかもしれません

SELECT  (tp.product_A + tp.product_B) AS total,tp.name
FROM table_person tp
ORDER BY total DESC
于 2013-06-02T05:32:57.867 に答える
1

これを行う最も簡単な方法は、人々が作成した推奨 SQL を使用することです。これをphpで行うことは、あなたの場合には実用的ではありません。むしろ、SQL で実行して、コードの記述とサーバー上のメモリを節約してください。

例:

SQL では:

SELECT *, product_A  + product_B AS product_sum FROM persons ORDER BY product_sum DESC

次にPHPで:

while($record = mysql_fetch_assoc($result_set))
{
    // Results Already will be sorted for you you just have to output them.
    echo $record['name'].' has '.$record['product_sum'].' product sum.';
    echo '<br/>'; 
}

また、名前、製品数、合計など、必要なものを出力できるようになりました。

于 2013-06-02T06:08:26.553 に答える
0

これを試して:

<?php
//product array ($products is the array fetched from the db)
$products = array();
$products[0] = array('id'=>1, 'name'=>'Joe', 'productA'=>1, 'productB'=>4);
$products[1] = array('id'=>2, 'name'=>'Leo', 'productA'=>5, 'productB'=>1);
$products[2] = array('id'=>3, 'name'=>'Lia', 'productA'=>2, 'productB'=>2);

//Create a single-column array with sums
$productSum = array();
foreach ($products as $product) {
    $productSum[] = (int)$product['productA'] + (int)$product['productB'];
}
//Do the magic, sort DESCENDING by $productSum-array into $products-array
array_multisort($productSum, SORT_DESC, $products);

//Output
print_r($products);
?>

出力:

Array (
[0] => Array ( [id] => 2 [name] => Leo [productA] => 5 [productB] => 1 )
[1] => Array ( [id] => 1 [name] => Joe [productA] => 1 [productB] => 4 )
[2] => Array ( [id] => 3 [name] => Lia [productA] => 2 [productB] => 2 )
)

array_multisort() の詳細については、http://php.net/manual/en/function.array-multisort.php をご覧ください

于 2013-06-03T13:11:47.053 に答える