尝试更改语句,因此create_radio函数只调用一次(PHP)

时间:2015-03-16 21:01:42

标签: php function

我有一个在PHP中创建单选按钮的函数:

// This function creates a radio button.
// The function takes two arguments: the value and the name.
// The function also makes the button "sticky".
function create_radio($value, $name = 'gallon_price') 
{
    // Start the element:
    echo '<input type="radio" name="' . 
        $name .'" value="' . $value . '"';

    // Check for stickiness:
    if (isset($_POST[$name]) && ($_POST[$name] == $value)) 
    {
        echo ' checked="checked"';
    } 

    // Complete the element:
    echo " /> $value ";
} // End of create_radio() function.

然后我离开PHP表单创建一个html表单并使用代表三种不同汽油价格的值调用该函数三次。

<span class="input">
        <?php
            create_radio('3.00');
            create_radio('3.50');
            create_radio('4.00');
        ?>
    </span>

我想知道如何更改此代码,以便可以获得相同的输出,只调用create_radio函数。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以将$value数组设为create_radio(数组(&#39; 3.00&#39;,&#39; 3.50&#39;,&#39; 4.00&#39;));只需在函数内循环:

function create_radio($value,$name = 'gallon_price'){

    foreach($value as $v){
        // Start the element:
        $out. = '<input type="radio" name="'.$name.'" value="'.$v.'"';

        // Check for stickiness:
        if(isset($_POST[$name])&&($_POST[$name]==$v)){
            $out .= ' checked="checked"';
        }

        // Complete the element:
        $out .= " /> $v ";
    }
    return $out;

} // End of create_radio() function.

称之为:

echo create_radio(array('3.00','3.50','4.00'));

通常最好不要在函数内部回显。

答案 1 :(得分:0)

function create_radio($value, $name = 'gallon_price') 
{
    $output = "";
    if (is_array($value)) {
        while (count($value) > 0) {
            $arr_value = array_pop($value);
            $output .= create_radio($arr_value);
        }
    } else {
        // Start the element:
        $output .= '<input type="radio" name="' . 
        $name .'" value="' . $value . '"';

        // Check for stickiness:
        if (isset($_POST[$name]) && ($_POST[$name] == $value)) 
        {
           $output .= ' checked="checked"';
        } 

     // Complete the element:
        $output .= " /> $value ";
    }
    return $output;
}

快速递归将允许该函数适用于数组和非数组。注意:在html中,您需要回显对create_radio的调用,而不仅仅是调用它。