0

2 つの配列があり、どちらも 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 を 2 回ループするため、複数回生成されます。何らかの理由で、複数のオプションなしでこれを適切に実行する方法がわかりません。(多分私は一日中働いていました)しかし、どんな助けも間違いなく感謝されます.

編集:出力の代わりに:

45 46 選択 47 選択 48 45 選択 46 選択 47 48

45 46 選択 47 選択 48

上記はforeachのために2回ループしますが、1回だけループする方法がわかりません。うーん、$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>

これの問題。複数の「デフォルト」オプション (選択済み) がある場合があります。

この助けを願っています。

アントワーヌ

(また、私はPHPで少し錆びています。「$array1 = $t->fetch_object()」の部分についてはわかりません。)

于 2013-01-31T04:34:49.890 に答える