在设定范围内递增整数

时间:2013-01-04 14:50:54

标签: php arrays

如果我想循环遍历数组然后将它们用作循环增量计数器,我该怎么做?

E.g。我最多有5个值存储在一个数组中。我想循环遍历它们,并且在forst循环中我想使用特定值,然后是第二个特定值。

下面的伪代码,但是如何将第二个数组引入图片?第一个范围是动态的,空的或最多5个值。第二个将被修复。

$array = array(2,6,8); // Dynamic

$array2 = array(11,45,67,83,99); Fixed 5 values

foreach ($array as $value) {
    // First loop, insert or use both 2 and 11 together
    // Second loop, insert or use both 6 and 45
    // Third loop, insert or use both 8 and 67
}

6 个答案:

答案 0 :(得分:2)

使用$index => $val

foreach ($array2 as $index => $value) {
    if ( isset($array[ $index ]) ) {
          echo $array[ $index ]; // 2, then 6, then 8
    }
    echo $value; // 11, then 45, then 67, then 83, then 99 
}

在此处查看:[{3}}


如果你希望它在第一个数组结束时停止,那么循环遍历第一个数组:

foreach ($array as $index => $value) {
    echo $value; // 2, then 6, then 8
    echo $array2[ $index ]; // 11, then 45, then 67
}

在此处查看:[{3}}

答案 1 :(得分:1)

这是一个干净而简单的解决方案,它不使用无用且繁重的非标准库:

$a = count($array);
$b = count($array2);
$x = ($a > $b) ? $b : $a;
for ($i = 0; $i < $x; $i++) {
    $array[$i]; // this will be 2 the first iteration, then 6, then 8.
    $array2[$i]; // this will be 11 the first iteration, then 45, then 67.
}

我们只是使用$i来识别主for循环中两个数组的相同位置,以便将它们一起使用。主for循环将迭代正确的次数,以便两个数组都不会使用未定义的索引(导致通知错误)。

答案 2 :(得分:1)

你可以试试这个 -

foreach ($array as $index => $value) {
      echo $array[ $index ]; // 2, then 6, then 8
      echo $array2[ $index ]; // 11, then 45, then 67

}

答案 3 :(得分:0)

确定两个数组的最小长度。

然后将索引i从1循环到最小长度。

现在您可以使用两个数组的i - 元素

答案 4 :(得分:0)

这是我认为你想要的:

foreach($array as $value){
     for($x = $value; $array[$value]; $x++){
       //Do something here...
     }
}

答案 5 :(得分:0)

您可以使用MultipleIterator

$arrays = new MultipleIterator(
    MultipleIterator::MIT_NEED_ANY|MultipleIterator::MIT_KEYS_NUMERIC
);
$arrays->attachIterator(new ArrayIterator([2,6,8]));
$arrays->attachIterator(new ArrayIterator([11,45,67,83,99]));

foreach ($arrays as $value) {
    print_r($value);
}

将打印:

Array ( [0] => 2 [1] => 11 ) 
Array ( [0] => 6 [1] => 45 ) 
Array ( [0] => 8 [1] => 67 ) 
Array ( [0] => [1] => 83 ) 
Array ( [0] => [1] => 99 ) 

如果您希望它要求两个数组都有值,请将标志更改为

MultipleIterator::MIT_NEED_ALL|MultipleIterator::MIT_KEYS_NUMERIC

然后会给出

Array ( [0] => 2 [1] => 11 ) 
Array ( [0] => 6 [1] => 45 ) 
Array ( [0] => 8 [1] => 67 )