0

我有两个数组都来自我的 SQL 服务器

示例:阵列 1 (45, 46, 47, 48) 阵列 2 (46, 47)

我的代码如下:

<select>
   <?
      while($array1 = $t->fetch_object()) /*Get from DB*/ {
        foreach($array2 as $a2){
   ?>
       <option <?=$array1 == $a2 ? 'value="'.$array1'" select="selected"' : 'value="'.$array1.'"'?>><?=$array1?><option>
<? } }?>
</select>

这将产生多次,因为它循环 array2 两次。出于某种原因,如果没有多个选项,我无法弄清楚如何正确运行它。(也许我整天都在工作)但是任何帮助都将不胜感激。

编辑:所以而不是输出是:

45 46 选定 47 选定 48 45 选定 46 选定 47 48

它是: 45 46 选择 47 选择 48

由于foreach,上述循环两次,我不知道如何让它只循环一次。嗯,如果我有 $i = 1 并且它在下一次计数时停止。

为了澄清我正在使用这个http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/下拉菜单。

4

1 回答 1

0

我可能不太了解您的问题,但我从代码中看到的。您正在尝试从 array2 中进行默认选择。我这样做的方法是:

<select>
<?php
//Here comes the php

//Variables
//---------------
$array2 = array(46,47);
//---------------

//Looping into the fecthed data
//------------------
while($array1 = $t->fetch_object()) /*Get from DB*/ {
    //Initalization of looping variables
    $boolFound = false;
    $i = 0;

    //looking into aray2 for default values
    while($boolFound == false && $i < count($array2)) //While a default is not a match 
    {                                                 //or the end of array2
        if($array2[$i] == $array1) //Is this a default value?
        {
             $boolFound = true; //Yes, we stop the loop
        }
        else
        {
            $i++; //No, we continu until the end of array2
        }
    }

    //Either we have a default or not we output the option
    echo('<option value="'.$array1.'" ');

    //if it is a default, we output "selected"
    if($boolFound)
    {
        echo('select="selected"');  
    }

    //Then the value itself, and we close the html
    echo('>'.$array1.'</option>');
}
//------END of data looping------------
//END of PHP    
?> 
</select>

这个问题。您可能有超过 1 个“默认”选项(已选中)。

希望这有帮助。

安托万

(我对 php 也有点生疏,不确定 "$array1 = $t->fetch_object()" 部分。)

于 2013-01-31T04:34:49.890 回答