【问题标题】:Selecting multiple array elements选择多个数组元素
【发布时间】:2012-02-26 12:24:35
【问题描述】:

PHP 中有没有办法一次选择多个数组元素,例如这样在 for 循环中,$i = 要选择的第一个集合的大小,然后后续增量表示从数组中选择该大小的下一个集合 - ?

谢谢!

【问题讨论】:

  • 即而不是一次循环遍历一个数组元素,而是循环遍历选定的对(例如 3 个元素,然后对这 3 个元素做一些事情)。
  • 你查看过 php array_slice 函数吗?这是你要找的吗? for ($i=0;$i<$x;$i+=$range) {$slice=array_slice($arr,$i, $range);print_r($slice);}

标签: php arrays select elements


【解决方案1】:

即而不是一次只循环一个数组元素,而是循环通过选定的对(例如 3 个元素,然后对这 3 个元素做一些事情)。

有很多方法可以做到这一点。
一个是

$arr = array(1,2,3,4,5,6,7,8,9);
$new = array_chunk($arr,3);
foreach ($new as $chunk) {
  print_r($chunk);// 3 elements to do something with
}

【讨论】:

    【解决方案2】:

    这取决于您希望如何对元素进行分组。

    $i = 4;
    $source = array( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 );
    // If you want consecutive elements in the same group, i.e. the first $i elements etc
    $chunks = array_chunk( $source, $i );
    foreach( $chunks as $chunk )
    {
        // Iterate over chunk
        echo '---<br />';
        foreach( $chunk as $element )
        {
            echo $element . '<br />';
        }
    }
    echo '---<br />';
    echo '---<br />';
    // Otherwise if you want consecutive elements in separate groups
    $lastElement = count( $source ) - 1;
    $step = ceil( count( $source) / $i );
    for( $offset = 0; $offset < $step; $offset++ )
    {
        echo '---<br />';
        for( $element = $offset; $element <= $lastElement; $element+= $step )
        {
            echo $source[$element] . '<br />';
        }
    }
    echo '---<br />';
    

    【讨论】:

      【解决方案3】:

      如果我理解你的问题,你有这样的事情吗?

      $array = array( "A" => array("a","b"),
                      "B" => array("a","b"),
                      "C" => array("a","b"));
      

      你想同时循环思考 A、B、C 吗?

      然后你可以做这样的事情;

      for($i=0;$i<=max(count($array['A']),count($array['B']),count($array['B']))){
           if(count($array['A'])<=$i+1) {
               echo $array['A'][$i];
           }
           if(count($array['B'])<=$i+1) {
               echo $array['B'][$i];
           }
           if(count($array['B'])<=$i+1) {
               echo $array['B'][$i];
           }
           $i++;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-12
        • 2017-11-29
        • 2016-06-03
        • 2023-01-25
        • 2017-02-08
        • 2014-09-08
        • 1970-01-01
        相关资源
        最近更新 更多