我有一个数组($ this-> taxBand),它有3个键=>价值对。每个值都是另一个数组:
array(3) {
["basic"]=>
array(3) {
["rate"]=>
int(20)
["start"]=>
int(0)
["end"]=>
int(31865)
}
["higher"]=>
array(3) {
["rate"]=>
int(40)
["start"]=>
int(31866)
["end"]=>
int(150000)
}
["additional"]=>
array(3) {
["rate"]=>
int(45)
["start"]=>
int(150001)
["end"]=>
NULL
}
}
我不仅需要遍历按键"基本","更高"和"额外"但其中的数组也是如此。
我将比较"开始"和"结束"使用另一个变量的值并根据" rate"。
应用计算我尝试使用我在这里找到的许多示例和官方文档,以几种不同的方式尝试嵌套foreach,并且只能让它返回" basic"数组元素。
示例:
foreach ($this->taxBand as $key => $band) {
foreach ($band as $subKey => $value) {
// Do my stuff
}
}
如果我返回$ band,我会得到:
array(5) {
["rate"]=>
int(20)
["start"]=>
int(0)
["end"]=>
int(31865)
}
并且$ key返回:
string(5) "basic"
我清除了一些非常基本的东西,并没有完全理解如何正确循环这些数组并获得我需要的所有数据。
非常感谢任何帮助。 :)
编辑:试图展示我计划如何使用此循环的示例。由于其他功能/变量,这很困难:
foreach ($this->taxBand as $key => $band) {
if ($band["end"] !== null || $band["end"] > 0) {
$band["amount"] = $this->get_lower_figure($this->totalTaxableAmount, $band["end"]) - $bandDeductions;
} else {
$band["amount"] = $this->totalTaxableAmount - $bandDeductions;
}
$band["percentage_amount"] = ($band["amount"] / 100) * $band["rate"];
$totalDeduction += $band["percentage_amount"];
$bandDeductions += $band["amount"];
return $totalDeduction;
}
假设$ this-> totalTaxableAmount是40000" percentage_amount"应该为基本波段返回6373的浮点数。但它也应该从更高的频段返回3254。
get_lower_figure()只需要两个参数并检查哪个小于另一个。
答案 0 :(得分:4)
您似乎正确处理一切......但如果您要直接使用start
/ end
/ rate
值,则不需要第二个{ {1}}循环。这样的事情可以让你前进:
foreach
我怀疑这是你打算做的工作,但关键是你可以直接访问内部关联数组$values = array();
foreach($this->taxBand as $key => $band) {
$calculation = ($band['end'] - $band['start']) / $band['rate'];
$values[$key] = $calculation;
}
return $values;
。
如果你出于某种原因使用子循环,你可以这样做:
$band