2

サーバーアカウントにこのコードを持つプラグインがある場合:

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、それ自体が選択します。

4

1 に答える 1

3

このコードが何をするのか完全には理解していないようですので、要約させてください。

最後から始めて、逆方向に作業してみましょう。関数が戻ると、$result変数には多数のタグを含む HTML フラグメントが含ま<optgroup>れており、それらには<option>タグが含まれています。<select>この HTML は、この関数の外のどこかのタグに貼り付けられると思います (ちなみに、これ<select>HTMLのものです。PHP にはselect()これとはまったく関係のない関数があるため、混乱を避けるために、HTML<select>を「PHP の選択オプション」と呼ばないでください)。 )。

そのforeach直前のループ$resultは、HTML の個々のチャンクを連結することによって値を構築します。これらは、関数の先頭で宣言されたネストされた連想配列から順に派生します。これらのループを注意深くたどると、結果の HTML のツリー構造がネストされた配列のツリー構造に従っていることがわかります。各最上位要素は<optgroup>になり、名前は配列キーから派生します。各第 2 レベルの要素は になり<option>、キーはvalue属性 (含まれているフォームが送信されるときに使用される値を決定する) に入り、値はユーザーに表示されるタグ コンテンツに入ります。配列要素は順番にアクセスされるため、配列で最初に来るものは、結果の HTML でも最初に来ます。

このコンテキストで知っておく必要があることが 2 つあり<select>ます。まず、タグを追加することで、デフォルトで選択されるオプションを定義できますselected(これを表現する標準的な方法は です<option selected="selected">...</option>)。で選択されているオプションは最大で 1 つ<select>です。次に、どのオプションにもselect属性がない場合、最初のオプションがデフォルトになります。

さて、これはあなたにとって何を意味しますか?selected簡単です。コードで WordPress エントリの属性を設定するようにすることもできます。このように、オプションは現在とまったく同じ順序のままであり、optgroups もすべてですが、WordPress が事前に選択されます。または、WordPress を最初の要素として配置することもできます。これにより、最初に配置され、オプションに属性<select>がないため、事前に選択されます。selected

于 2013-01-12T13:10:50.723 に答える