【问题标题】:Iterate over Multidimensional Arry for specific values迭代多维数组以获取特定值
【发布时间】:2016-10-02 13:49:19
【问题描述】:

我正在尝试遍历我的多维数组以获取每个嵌套数组的选定值的索引。例如,当我运行循环时,我正在比较 $income 以查看它是否在每个数组的“范围”之间。当找到“范围”时,我想采用该范围 $x 并使用它根据每个嵌套数组的“MinTax”和“Rates”进行计算。到目前为止,我能够遍历 $TAX_RATES 数组,但不确定如何存储每个嵌套数组的索引。到目前为止还不确定该怎么做。这是代码。

<?php

$income = filter_input(INPUT_POST, 'income'); 
define('TAX_RATES',
array(
 'Single' => array(
  'Rates' => array(10,15,25,28,33,35,39.6),
  'Ranges' =>array(0,9275,37650,91150,190150,413350,415050),
      'MinTax'=>array(0,927.50,5183.75,18558.75,46278.75,119934.75,120529.75),
  ),
  'Married_Jointly' =>array(
    'Rates' => array(10,15,25,28,33,35,39.6),
    'Ranges' =>array(0,18550,75300,151900,231450,413350,466950),
    'MinTax' =>array(0,1855.00,10367.50,29517.50,51791.50,111818.50,130578.50),
  ),
  'Married_Seperately' =>array(
    'Rates' => array(10,15,25,28,33,35,39.6),
    'Ranges' =>array(0,9275,37650,75950,115725,206675,233475),
    'MinTax'=>array(0,927.50,5183.75,14758.75,25895.75,5599.25,65289.25),
  ),
  'Head_Household' =>array(
    'Rates' => array(10,15,25,28,33,35,39.6),
    'Ranges' =>array(0,13250,50400,130150,210800,413350,441000),
    'MinTax' => array(0,1325.00,6897.50,26835.00,49417,116258.50,125936)
  )
 )
);

  function incomeTax($income){
    foreach(TAX_RATES as $lvl => $lvl_data){
        $x=0; 
        while ($x <=7){
          if($income>=TAX_RATES[$lvl]['Ranges'][$x] 
          && $income<=TAX_RATES[$lvl]['Ranges'][$x+1]){              
          return $income=TAX_RATES[$lvl]['MinTax'][$x]
                 +((TAX_RATES[$lvl]['Rates'][$x]*.01)
                 *($income-(TAX_RATES[$lvl]['Ranges'][$x])));
            } 
        $x++; 
        }   
  }    
  };

$results = incomeTax($income);

?>  

【问题讨论】:

  • 我想知道是否应该将索引存储在数组中并返回数组并使用数组对每个嵌套数组进行计算

标签: php loops multidimensional-array


【解决方案1】:

感谢这个论坛,我能够弄清楚。 https://www.codecademy.com/en/forum_questions/556d9d0ad3292f03fb000558。这是我的新代码。

function incomeTax($income){
    foreach(TAX_RATES as $lvl => $lvl_data){         
        for($i=0; $i<count(TAX_RATES[$lvl]['Ranges']); $i++){
          for($l=0; $l<count(TAX_RATES[$lvl]['Ranges'][$i]); $l++){

          if($income>=TAX_RATES[$lvl]['Ranges'][$i] 
          && $income<=TAX_RATES[$lvl]['Ranges'][$i+1])
            {
            echo $i; 
            }
          }
        }

   } 
};

【讨论】:

  • 这会打印出每个数组中符合我的 if 语句条件的索引。
猜你喜欢
  • 2022-01-02
  • 1970-01-01
  • 2018-01-01
  • 2019-06-26
  • 2023-03-08
  • 2014-05-17
  • 1970-01-01
相关资源
最近更新 更多