簡體   English   中英

PHP的形式下拉菜單正常工作,但使它成為一個函數

[英]php form drop down menu works normally but not when making it into a function

我目前正在閱讀PHP教程,並創建了一個表單下拉菜單。 我試圖通過將一些代碼塊移到函數中來提高代碼效率。

為什么以下代碼在使其成為函數時不起作用(示例1),但在其他情況下卻起作用(示例2)?

范例1:

<div id="leftnav">
<div class="search">

    <form name="search" method="get" action="search.html" id="search">
        <input type="text" value="keywords" name="keyword" class="s0" /> 
        <br />

        <select name="title" class="s2">

        <?php 

            productSelection(); // This is the function I am referring to

        ?> 


        </select>
        <br />
        <input type="submit" name="search" value="Search Products" class="button marT5" />
        <input type="hidden" name="page" value="search" />
    </form>

該函數定義如下:

productSelection() {

sort($titles, SORT_STRING); // Sort array of products

foreach ($titles as $deserts) {

    printf("<option value=\"%s\">%s</option>", $deserts, $deserts);

}

范例2:

    <form name="search" method="get" action="search.html" id="search">
        <input type="text" value="keywords" name="keyword" class="s0" /> 
        <br />

        <select name="title" class="s2">

        <?php 

            sort($titles, SORT_STRING); // Sort array of products

            foreach ($titles as $deserts) {

                printf("<option value=\"%s\">%s</option>", $deserts, $deserts);

            } 

        ?> 


        </select>
        <br />
        <input type="submit" name="search" value="Search Products" class="button marT5" />
        <input type="hidden" name="page" value="search" />
    </form>

$titles無法使用,因為它超出了范圍 全局變量在函數內部不可用,除非您將它們作為參數傳遞(首選)或使用global關鍵字(不推薦)。

productSelection($titles) {
    sort($titles, SORT_STRING); // Sort array of products
    foreach ($titles as $deserts) {    
        printf("<option value=\"%s\">%s</option>", $deserts, $deserts);
    }
}

當調用它時:

<?php 
    productSelection($titles); 
?> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM