【问题标题】:parsing arrays using foreach使用 foreach 解析数组
【发布时间】:2013-10-18 15:26:26
【问题描述】:

我在表单中有一个数组

$array = array(
    name => array (
        [0] => peter,
        [1] => george,
        [2] => sarah
    ),
    age => array(
        [0] =>1,
        [1] =>2,
        [2] =>3
    )
)

我想将它解析成一个表格,但是当我使用 foreach 循环时,我似乎无法让它正确输出。

如果我使用

foreach($array[name] as $name){
    foreach($array[age] as $age{

        echo $name.$age;
    }
}

然后它只是输出每个年龄的名称,然后移动到下一个名称,然后执行所有 3 个年龄,然后是最后一个年龄..

我想要:

姓名1 年龄1 姓名2 年龄2 姓名3 年龄3

【问题讨论】:

  • 您的array 'age' 不在数组'name' 中是吗?所以你的foreach 循环是错误的。
  • 这是一个糟糕的数据结构。而不是单独的名称和年龄数组,你应该有 array([0] => array(name=>peter, age=>1), [1] => array(name=>george, age=>2), 。 ..)

标签: php arrays


【解决方案1】:

试试这个:

foreach($array['name'] as $iKey => $name){

echo $name.$array['age'][$iKey];

}

【讨论】:

    【解决方案2】:
    foreach (array_keys($array['name']) as $key) {
        echo $array['name'][$key] . $array['age'][$key];
    }
    

    基本上,从您的“主”数组之一中获取子数组键,然后在循环中使用该键从两个子数组中提取您需要的任何数据。

    您可以在官方文档中找到array_keyshere的更多详细信息。

    【讨论】:

      【解决方案3】:
      $array = array(
          'name' => array(
          0 => 'peter',
          1 => 'george',
          2 => 'sarah'
          ),
          'age' => array(
          0 =>'1',
          1 =>'2',
          2 =>'3'
          )
      );
      
      foreach($array['name'] as $key => $value)
      {
          echo 'Name: ' . $value . ' - Age: ' . $array['age'][$key].'<br />';
      }
      

      编辑:哦,太晚了:)

      【讨论】:

        【解决方案4】:
        for ($i = 0; $i < count($array['name']); $i++) {    
           echo $array['name'][$i].$array['age'][$i];
        }
        

        【讨论】:

          【解决方案5】:

          这是您问题的代码:

          <?php
          $array = array(
          "name" => array (
          0 => "peter",
          1 => "george",
          2 => "sarah"
          ),
          "age" => array(
          0 =>1,
          1 =>2,
          2 =>3
          )
          );
          $name = $array['name'];
          $age = $array['age'];
          
          
          for($i=0;$i<count($name);$i++)
          {
           echo $name[$i].' '.$age[$i].' ';
          }
          ?>
          

          【讨论】:

            【解决方案6】:

            在安装时使用:

            $i=0;
            $len=count($array['name']);
            while($i<$len){
               echo $array['name'][$i].$array['age'][$i];
               ++$i;
            }
            

            使用预先计算,在循环之前而不是在循环中设置循环的最大值。

            微优化技巧见下文http://labs.phurix.net/posts/50-php-optimisation-tips-revisited

            【讨论】:

            • 这是假设已知长度为 3。
            • while($i
            • 见我的更新长度。为了优化目的,最好在循环之前进行计数。
            猜你喜欢
            • 2012-06-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-04-15
            • 2018-05-14
            • 2017-06-17
            • 2011-02-12
            • 2016-12-11
            相关资源
            最近更新 更多