我是网络开发的先驱。我的要求在这里有点独特。我有一组得分,得分为1到得分为n。每个分数与影响总分的因子相关联。现在我想写一个configuration.php
文件:
<?php
define("NUMBER_SCORES",4,true);
define("FACT_SCORE[1]",0.2,TRUE);
define("FACT_SCORE[2]",0.6,TRUE);
define("FACT_SCORE[3]",0.8,TRUE);
define("FACT_SCORE[4]",0.6,TRUE);
define("FACT_SCORE[5]",0.7,TRUE);
?>
然后我希望迭代这些值:
<?php
function grand_total()
{
$agg_score=0;
for($i=1;$i<=number_scores+1;$i++)
$agg_score=$agg_score+ (FACT_SCORE[$i])*$scores[$i];
return $agg_score;
}
?>
我知道这不是正确的方法,但我无法弄清楚我是如何实现这一功能的? configuration.php
文件经常更改以满足所需要求,而许多其他页面使用其中的数据。有没有其他方法可以实现这个目标?
答案 0 :(得分:2)
如果您的常量名称很复杂,则需要使用constant()来调用它们:
constant('FACT_SCORE[' . $i . ']')
当然,鉴于它不是一个数组,摆脱方括号可能不那么令人困惑:
define("FACT_SCORE_1",0.2,TRUE);
define("FACT_SCORE_2",0.6,TRUE);
define("FACT_SCORE_3",0.8,TRUE);
define("FACT_SCORE_4",0.6,TRUE);
define("FACT_SCORE_5",0.7,TRUE);
或者只是使用数组; - )
答案 1 :(得分:1)
为什么不在阵列中制作它?语法更清晰:
$FACT_SCORE = array(
1 => 0.2,
2 => 0.6,
3 => 0.8,
4 => 0.6,
5 => 0.7
);
然后简单地说:
function grand_total()
{
$agg_score=0;
foreach ( $FACT_SCORE as $i => $k )
$agg_score += $scores[$i]*$k;
return $agg_score;
}
答案 2 :(得分:0)
<?php
$fact_score = array(null, 0.2, 0.6, 0.8, 0.6, 0.7);
答案 3 :(得分:0)
定义静态数组会为你工作吗?
static $FACT_SCORE = array(
0.2, 0.6, 0.8,
0.6, 0.7
);
function grand_total()
{
$agg_score = 0;
for($i = 1; $i <= number_scores + 1; $i++)
$agg_score += $FACT_SCORE[$i - 1] * $scores[$i];
return $agg_score;
}
答案 4 :(得分:0)
我知道这不是正确的方法,但我无法弄清楚我是如何实现这一功能的。
我不会为此使用常量,说实话。一个简单的数组就足够了,尽管这在整个应用程序中都是可以改变的。如果你仍然倾向于使用常量来实现你的目标,你可以使用这样的东西:
define("NUMBER_SCORES",5,true);
define("FACT_SCORE[1]",0.2,TRUE);
define("FACT_SCORE[2]",0.6,TRUE);
define("FACT_SCORE[3]",0.8,TRUE);
define("FACT_SCORE[4]",0.6,TRUE);
define("FACT_SCORE[5]",0.7,TRUE);
function grand_total()
{
/** Making this up, as it's not in the example. */
$scores = array( 0, 1, 2, 3, 4, 5 );
$agg_score=0;
for($i=1; $i <= NUMBER_SCORES; $i++ ) {
$agg_score += constant( 'FACT_SCORE[' . $i . ']' ) * $scores[$i];
}
return $agg_score;
}
var_dump( grand_total( ) );
编辑:改变并测试了这个例子,似乎对我有用。最后一个示例有拼写错误,并且未定义$ score。
答案 5 :(得分:0)
您无法将数组分配给常量。你能做什么,将是:
<?php
define("FACT_SCORE", serialize(array(0.2, 0.4)), TRUE);
foreach (unserialize(FACT_SCORE) as $value) {
echo $value; // or calc some stuff
}
虽然距离美丽不远......