在foreach中将数组添加到自身而不重复?

时间:2012-09-13 21:55:27

标签: php arrays foreach

   public function GetOpsPremiums()
    {
        // Get the Cost Multiplier
        $costMulti  = $this->GetCostMultiplier();
        // Get the Prem Ops
        $premOps    = $this->GetPremOpsEL();
        // Get the Factors
        $factors    = $this->GetFactors();

        // Get the full class array
        $classArray = $this->GetClassArray();

        foreach ($classArray as $key => $values) {
            $classTotalHalved = $values / 1000;
            $mainMultiplier = $costMulti * $premOps[$key] * $factors[$key]['premops'];
            $premium = $classTotalHalved * $mainMultiplier;
            $opsPremiums = array(
                            $key => round($premium)
                        );
        }
        return $opsPremiums;
    }

我希望$ opsPremiums不仅一次迭代1。我需要它来迭代并将自己添加到自身。

我试过

foreach ($opsPremiums as $key2 => $values2) {
     $opsPremiums = array(
                         $key => round($premium)
                    );
}

有人可以向我解释为了让$ opsPremium整齐地堆叠到一个数组中我需要做什么吗?

3 个答案:

答案 0 :(得分:2)

我有点不确定你的意思,但是你想在$ opsPremium中返回所有结果吗?

问题是你在每次迭代时将其设置为一个数组而不是添加它。

$opsPremium = array();
foreach ($classArray as $key => $values) {
        $classTotalHalved = $values / 1000;
        $mainMultiplier = $costMulti * $premOps[$key] * $factors[$key]['premops'];
        $premium = $classTotalHalved * $mainMultiplier;
        $opsPremiums[] = array(
                        $key => round($premium)
                    );
}
return $opsPremiums;

在循环外存储$ opsPremium并每次添加它都会为您完成。

如果这不是你要求的,我道歉。

答案 1 :(得分:2)

应该如此

foreach ($opsPremiums as $key2 => $values2) {

 $opsPremiums[] = array(
                     $key => round($premium)
                );
}

答案 2 :(得分:0)

您似乎对如何谈论您的问题的术语感到困惑。我相信你应该问的是,我想添加一些额外的项目,包括它自己到一个数组返回。在这种情况下,你需要的魔法是数组连接。我有点不确定您的数组需要什么,但您可以使用[]运算符将任何内容附加到任何php数组。如果您回答更详细的问题,或许我可以帮助您。

根据您添加到数组的内容,要使程序运行,您可能需要使用array_merge,array_push。