PHP でこれを行うより適切な方法は、重みの連想配列を宣言することだと思います。これにより、データがアルゴリズムから分離されます。
$weight=array(
1=>1,
3=>3,
4=>10
);
$result = mysql_query("SELECT `number` FROM `packages`");
$sum=0;
while ($row = mysql_fetch_assoc($result))
{
$n = $row['number'];
if (isset($weight[$n]))
{
$sum+=$weight[$n];
}
else
{
#handle error somehow, maybe with a default weight
die("Unexpected value $n");
}
}
より良い代替手段は、これを完全にデータ駆動型にし、重みをテーブルに入れることです
#create and populate the weights table
create table weight (number int, weight int, primary key(number));
insert into weight (number,weight) values (1,1),(3,3),(4,10);
#figure out total weight
select sum(weight) from package inner join weight using(number);
データベース内の重みを使用して、アプリケーションのユーザーが重みを調整できるようにする UI を提供できます。