2013-01-12 89 views
2

如果我在我的服務器帳戶的一個插件,有這樣的代碼:在PHP中選擇選項

function script_options() { 
    $scripts = array(
     'Forum' => array(
      '403' => 'phpBB2', 
      '5' => 'phpBB3', 
      '417' => 'Simple Machines Forum', 
     ), 
     'Blog' => array(
      '410' => 'b2evolution', 
      '418' => 'Movable Type', 
      '409' => 'Textpattern', 
      '400' => 'WordPress', 
     ), 
     'Wiki' => array(
      '413' => 'DokuWiki', 
     ), 
    ); 
    $result = '<option value="">'.__rp('none','none').'</option>'; 
    foreach ($scripts as $group => $list) { 
     $result .= "<optgroup label=\"$group\">"; 
     foreach ($list as $script_key => $script_value) { 
      $result .= "<option value=\"$script_key\"".($script_key == isset($_GET['script'])?$_GET['script']:false ? ' selected="selected"':'').">$script_value</option>"; 
     } 
     $result .= '</optgroup>'; 
    } 
    return $result; 
} 

我怎樣才能讓第一選擇是('400' 'Wordpress');如果用戶沒有選擇它自己選擇的東西Wordpress

+0

我在每一處添加了'Blog''400''Wordpress',但因爲它沒有直接出現,所以我不知道什麼是最好的。 – 2013-01-12 11:59:48

+0

我需要知道做這個選擇的標準方式 – 2013-01-12 12:00:20

回答

3

看起來你並不完全理解這段代碼的作用,所以讓我來爲你解釋它。

讓我們在年底開始和我們的方式向後:當函數返回時,$result變量包含了一堆在它<optgroup>標記的HTML片段,以及那些包含<option>標籤。我想這HTML被粘貼到<select>標籤超出這個功能的地方(順便說一句,<select>HTML的事情,PHP有一個select()功能是完全無關的這一點,所以爲了避免混淆,不涉及HTML的<select>爲「PHP中的選擇選項」)。

foreach正好在構建$result值之前通過連接各個HTML塊,而這些又是從在函數開頭聲明的嵌套關聯數組派生而來的。如果仔細查看這些循環,您將看到生成的HTML的樹結構遵循嵌套數組的結構:每個頂級元素都變爲<optgroup>,並且名稱是從數組鍵生成的;每個二級元素變爲<option>,其中鍵進入value屬性(它確定提交包含表單時使用的值),並將該值放入用戶可見標記內容中。數組元素按順序訪問,所以數組中第一個出現在結果HTML中的也是第一個。

有兩件事情你需要在這方面瞭解<select>:第一,你可以定義通過添加selected標籤給它(標準的方式來表達,這是<option selected="selected">...</option>)哪個選項是默認選中;您的<select>中最多隻能有一個選項。其次,如果沒有任何選項具有select屬性,則第一個選項將成爲默認值。

現在,這對你意味着什麼?簡單:你可以這樣做,以便你的代碼在WordPress條目上設置selected屬性;這樣,您的選項仍然按照現在的順序排列,optgroups和all,但WordPress將被預先選定。或者,您可以將WordPress作爲第一個元素,它首先放在<select>中,並且應該預先選中它,因爲沒有選項具有selected屬性。

+0

感謝tdammers的幫助;讓它使你的代碼在WordPress條目上設置選定的屬性;這樣,您的選項仍然按照現在的順序排列,optgroups和all,但WordPress將被預先選定。 )這正是我想要的,但可以肯定的是這是我必須做到的方式{$ result。=「」; \t \t} \t \t $ result。=''; \t} } – 2013-01-12 13:27:08

+0

或者這樣{selected =「WordPress」':'400')。「> WordPress」} – 2013-01-12 13:37:31