【问题标题】:PHP using the recursive array iterator classPHP使用递归数组迭代器类
【发布时间】:2014-05-13 03:39:03
【问题描述】:

我有点困惑。我有以下数组:我正在尝试使用 STL 迭代器循环遍历它并返回 Name = Dodge 的任何数组的所有值的总和。我注意到我不能像使用 for each 循环那样做$cars['Price']。我如何获得汽车的价格?

$cars = Array {

     array[0] {
               'Name' => 'Dodge',
               'Drive' => '4W',
               'Price' => '15,000'

              },
     array[1] {
               'Name' => 'Corolla',
               'Drive' => '2W',
               'Price' => '17,300'
               }
         ..
}

这是否正确:

try {
    $iter = new RecursiveArrayIterator($cars);

    // loop through the array
    $all_totals = array();
    foreach(new RecursiveIteratorIterator($iter) as $key => $value) 
    {

        if($key == 'Name' && $value == 'Dodge') 
        {
            //how to get the Price of the car?

            //push into totals array:
            $all_totals[$value] = $value;
        }

    }
}

【问题讨论】:

  • 为什么要用RecursiveIterator 来完成这个任务,而它可以通过简单的foreach 循环直接解决?
  • @raina77ow 我知道它可以我正在尝试学习 RecursiveIterator 类。同样从我读过的内容来看,大型阵列的 SPL 更快
  • 看,当你只有钉子要处理的时候,你不会学会如何使用螺丝刀。 ) RecursiveIterator 最适合您必须处理复杂的层次结构 - 特别是树。查看this thread 了解有关此 SPL 功能如何发挥作用的非常详细的说明。
  • 有道理感谢这个链接

标签: php arrays


【解决方案1】:

你可以试试这个。

foreach($cars as $key=>$value){
  echo $value['Name']." has a price of ".$value['Price'];
}

【讨论】:

    【解决方案2】:
    Use this code for perticular Dodge car price.
    
    $sumofDodgeCar = 0;
    
    foreach($cars as $value){
        if($value['Name']=='Dodge') {
             echo $value['Name']." has a price of ".$value['Price'];
        $sumofDodgeCar = $sumofDodgeCar + $value['Price'];
        }
    }
    
    echo "All Dodge car Price Sum :".$sumofDodgeCar;
    

    【讨论】:

      【解决方案3】:

      为此使用[array_keys()][1]

      $keys = array_keys($array);
      

      【讨论】:

        猜你喜欢
        • 2013-11-11
        • 1970-01-01
        • 2020-03-21
        • 2017-02-02
        • 2013-12-01
        • 2013-06-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多