多个foreach有两个数组

时间:2012-11-08 23:14:24

标签: php arrays foreach

我一直在试图弄明白这一点......但似乎无法让它发挥作用。

我的代码有效:

<?php foreach ($value['options'] as $option) { ?>
<option><?php echo $option; ?></option>
<?php } ?>

它正确显示,列出的数组作为我的选项。但是我希望通过将另一个数组拆分成一个选项来为每个数组创建一个值:

<?php foreach ($value['options'] as $option) {
      foreach ($value['cids'] as $cid) { ?>
<option value="<?php echo $cid; ?>"><?php echo $option; ?></option>
<?php } } ?>

每当我这样做,我的选择会以各种可能的方式成倍增加,这是我不想要的。我该如何做这样的事呢

<?php foreach ($value['options'] as $option AND $value['cids'] as $cid) { 
    echo $option;
    echo $cid;
 } ?>

我知道这不起作用......只是想要类似的东西。提前谢谢!

3 个答案:

答案 0 :(得分:3)

使用MultipleIterator

<?php
$array1 = range(1,5);
$array2 = range(6,10);

$iterator = new MultipleIterator();
$iterator->attachIterator(new ArrayIterator($array1));
$iterator->attachIterator(new ArrayIterator($array2));
foreach($iterator as $items){
        echo $items[0].' - '.$items[1];
}

?>

当然,真正的老派(你们年轻人不知道foreach已经破坏了你们多少人):

<?php
$array1 = range(1,5);
$array2 = range(6,10);

//reset array pointers to be sure
reset($array1);
reset($array2);
while((list(,$a) = each($array1)) && (list(,$b) = each($array2))){
   echo $a .':'.$b.PHP_EOL;
}

答案 1 :(得分:0)

我们假设$value['options']$value['cids']的长度$length相同:

<?php  for($i=0 ; $i < $length; $i++) { ?>
    <option value="<?php echo $value['options'][$i]; ?>"><?php echo $value['cids'][$i]; ?></option>
    $arr[$i];
<?php } ?>

如果你的数组是关联的,你可以使用类似的东西:

function getArrayFromIndex($arr, $ind)
{
    $i==0;
    foreach ($arr as $key => $value) {
        if ($i==$ind)
             return $key;
    }
}

通过调用

获取第N个元素

getArrayFromIndex($value['options'],$i)

而不是

$value['options'][$i]

答案 2 :(得分:0)

首先,谢谢大家的答案。它使我走向了正确的方向。以下是我为实现这一目标所做的工作。

<?php 

$myoptions = array_combine($value['options'], $value['cid']);
foreach ($myoptions as $option => $cid) { ?>

<option value="<?php echo $cid; ?>"><?php echo $option; ?></option>

<?php }  ?>

我做了array_combine来回应我的价值观。