douan6931 2015-07-24 03:57

# 使用foreach中的每个循环在现有数组中创建新数组

I have a foreach loop which, for each pension ID, i am using the pension amount that corresponds to that ID and applying an inflation rate to the pension value over 30 years. There will always be a variable amount of unique pensions for each person.

In the foreach loop I am able to run it and have it produce the future value of the pension amount over time, iterating each years increased values. The problem i am running into is that for each pension id it is adding the new pension values into the name array.

For example, if the individual has 4 pensions, that produces 120 array values in one array. What I am wanting is 4 (or how many pensions are there) arrays with each unique pension values in its own array. My goal is to then add each pension year from each array together and come to a total pension amount for the individual for each year.

Example.
`pension 1 array([1] => 100 [2] => 200 [3] => 300…….`
`pension 2 array([1] => 200 [2]=> 300 [3] => 400……`

(then adding each array together based on key)
`Total pension amount array([1] => 300 [2] => 500 [3] => 700`

I have been trying all sorts of things but can’t find a solution, Im thinking the foreach might not be able to accomplish this.

To to recap the solution I need, after each pass of the foreach I need to create a new array with the new values and not have them add to the existing array.

Any help would be wonderful.

Here is my existing code.

note: everything is going into \$pension[]

``````foreach(\$pen_start as \$key => \$value){

if(\$value < \$age){
if(\$pen_cola[\$key] == 'Yes'){
\$i = 0;
\$a = \$age;
\$previous = \$pen_amount[\$key];
while(\$i <= 29 ){
\$pension[] = str_replace(',','',number_format((\$previous*1.02),2));
\$previous = \$previous*1.02;
\$i++;
\$a++;
};
// if yes end
} else if(\$pen_cola[\$key] == 'No' || \$pen_cola[\$key] == ''){

\$i = 0;
\$a = \$age;
\$previous = \$pen_amount[\$key];
while(\$i <= 29 ){

\$pension[] = str_replace(',','',number_format((\$previous),2));
\$previous = \$previous;
\$i++;
\$a++;
};
} // if no end
} // if older end
else if(\$value > \$age){
if(\$pen_cola[\$key] == 'Yes'){
\$i = 0;
\$a = \$age;
\$previous = 0;
while(\$i <= 29 ){

if(\$a < \$value){
\$amount = 0;
}else if(\$previous == 0){
\$amount = \$pen_amount[\$key];}
else {\$amount = \$previous;}

\$pension[] = str_replace(',','',number_format((\$amount*1.02),2));
\$previous = \$amount*1.02;
\$i++;
\$a++;
};
// end if yes
}  else if(\$pen_cola[\$key] == 'Yes'){
\$i = 0;
\$a = \$age;
\$previous = 0;
while(\$i <= 29 ){

if(\$a < \$value){
\$amount = 0;
}else if(\$previous == 0){
\$amount = \$pen_amount[\$key];}
else {\$amount = \$previous;}

\$pension[] = str_replace(',','',number_format((\$amount),2));
\$previous = \$amount;
\$i++;
\$a++;
};
} //end if no
} // if younger end
} // end foreach
``````
• 写回答

#### 悬赏问题

• ¥15 pycharm打包项目包含mp3文件，运行exe程序后mp3文件没有执行。
• ¥15 Quantlib求discount factors
• ¥15 JS宏提取满足比率的字符区段
• ¥20 webapi项目的XUnitTest单元测试怎么注入token和自写拦截器（filter）(语言-c#)
• ¥15 exe和xml必须在一个文件夹才能打开exe文件
• ¥15 房号如何排序，sql或算法
• ¥15 macOS使用IDEA 2022.2.4打包JDK6项目报错
• ¥20 使用matlab进行含参数的最优化求解及数值模拟
• ¥20 MATLAB找出一维变量中的局部极大值和局部极小值，并进行运算
• ¥15 有Chang求三维杆单元几何非线性分析matlab代码