2

我整天都在试图解决这个问题......但似乎无法让它发挥作用。

我有这个有效的代码:

<?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;
 } ?>

我知道那行不通……只是想要类似的东西。提前致谢!

4

3 回答 3

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;
}
于 2012-11-08T23:27:39.000 回答
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]

于 2012-11-08T23:19:35.897 回答
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回应我的价值观。

于 2012-11-09T16:31:01.447 回答