【问题标题】:need to acces values individually outside a for loop from a array需要从数组的 for 循环之外单独访问值
【发布时间】:2014-01-13 15:26:42
【问题描述】:

我有一个带有计算功能的 php for 循环。现在我想将计算中的每个值放入一个数组中,并在 for 循环之外单独访问它们。

这不起作用,无论我尝试什么,我都会遇到各种错误

这是我的代码

$week=1; // Begin week
    $eind_week1 = 4; // Einde week eerste berekening
    $eind_week2 = 9; // Einde week tweede berekening

    $groei_dynamiek = array();

    for($week; $week <= $eind_week1; $week++) // Dit is een berekening tot week 4, de weken daarna is een andere berekening. Zie hieronder
    {

        $groei_dynamiek1    = -0.0195 * pow($week, 3) + 0.1092 * pow($week, 2) - 0.073*$week + 0.0059;
        $groei_dynamiek1    = sprintf("%.1f%%", $groei_dynamiek1 * 100);

        $groei_dynamiek["week"][] = $groei_dynamiek1;

        @$totaal += $groei_dynamiek;
    }

echo $groei_dynamiek["week"][0];
echo $groei_dynamiek["week"][1];
echo $groei_dynamiek["week"][2];
echo $groei_dynamiek1["week"][3];

【问题讨论】:

  • 在循环的每一次迭代中,您都执行以下操作:$groei_dynamiek1 = array(); 花几分钟时间思考一下为什么会出现问题。
  • 嗨,我现在把它放在我的循环之外,但它仍然不工作......

标签: php arrays variables for-loop


【解决方案1】:

$groei_dynamiek1 = array(); 语句必须放在 for 循环之前。否则,循环的每次迭代都会将数组设置为空,忽略在前一次迭代中添加的值。在循环之前必须有另一个语句$totaal = 0;。永远记住,用@ 抑制错误并不是一个好主意。最后,你不应该对数组本身进行计算;相反,您需要一个临时变量(我们称之为$temp)。纠正这些错误,您的代码变为:

$week = 1; // Begin week
$eind_week1 = 4; // Einde week eerste berekening
$eind_week2 = 9; // Einde week tweede berekening
$totaal = 0;
$groei_dynamiek1 = array();
for($week; $week <= $eind_week1; $week++){
// Dit is een berekening tot week 4, de weken daarna is een andere berekening. Zie hieronder
        $temp = -0.0195 * pow($week, 3) + 0.1092 * pow($week, 2) - 0.073*$week + 0.0059;
        $temp = sprintf("%.1f%%", $temp * 100);
        $groei_dynamiek1["week"][] = $temp;
        $totaal += $temp;
}
unset($temp);
echo $groei_dynamiek1["week"][1];

【讨论】:

  • 感谢上帝,感谢您的解释。这非常有效。抱歉,我是 php 新手。
  • 也感谢 $totaal 解决方案。 Dindt 知道您必须为其分配一个空值或 0 值。
  • @Julez,我不会说荷兰语来建议更好的名称,但您可能也想考虑重命名变量。通常,给变量赋予相同的名称并为每个变量附加不同的数字是一种不好的做法(@eind_week1 vs $eind_week2$groei_dynamiek1 vs $groei_dynamiek)除其他原因外,它可以很容易地引入通过简单的拼写错误在键盘上敲击彼此相邻的数字。
【解决方案2】:

$groei_dynamiek1 设置为数组,但 $groei_dynamiek1['week'] 未设置。

   $groei_dynamiek1["week"] = array();

需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-24
    • 1970-01-01
    相关资源
    最近更新 更多