2

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

例如,我有多达 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
}
4

6 回答 6

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 
}

在此处查看实际操作:http ://codepad.viper-7.com/gpPmUG


如果您希望它在第一个数组的末尾停止,然后遍历第一个数组:

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

在此处查看实际操作:http ://codepad.viper-7.com/578zfQ

于 2013-01-04T14:54:41.113 回答
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循环将迭代正确的次数,以便两个数组都不会使用未定义的索引(导致通知错误)。

于 2013-01-04T14:57:15.057 回答
1

你可以试试这个-

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

}
于 2013-01-04T14:58:39.787 回答
0

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

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

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

于 2013-01-04T14:55:03.103 回答
0

这是我认为你想要的:

foreach($array as $value){
     for($x = $value; $array[$value]; $x++){
       //Do something here...
     }
}
于 2013-01-04T14:55:53.547 回答
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 ) 
于 2013-01-04T15:00:43.577 回答