为什么我的函数不输出任何东西?

时间:2018-12-10 10:44:51

标签: php function if-statement

我只是想学习一些代码。 我这里有这段代码,虽然重复了好几次

它可能不是专业人士,而是凌乱的代码。

<td><?php if ($row["boption03"] >= 1) echo "
        <input 
        name='orderdetails[" . $row['prod_selectname'] . 03 . "]' 
        id='" . $row['prod_selectname'] . 03 . "' 
        placeholder='3mg' type='number' 
        class='liq03 form-control'"?> <?php if ($row["boption03"] == 2) echo "disabled" ?>
        <?php if ($row["boption03"] >= 1) echo "/>"?>
        </td>

我正在尝试将其放入函数中(因为我认为它更好更整洁)

这是我到目前为止所拥有的

function liquidBox($boptionStrength) {
if ($row["boption$boptionStrength"] >= 1) echo "
            <input 
            name='orderdetails[" . $row['prod_selectname'] . $boptionStrength . "]' 
            id='" . $row['prod_selectname'] . $boptionStrength . "' 
            placeholder='$boptionStrength' type='number' 
            class='liq$boptionStrength form-control'" . (($row["boption$boptionStrength"] == 2)?'disabled':"") . "/>";

}

并通过

调用
<td><?php liquidBox("00"); ?></td>

但是它什么也没输出。

有人能指出我正确的方向吗?

谢谢

如果我将var_dump($ boptionStrength)放在“ if”之前,那么我确实获得了输出int(3),因此该变量将传递给函数-Cid建议

3 个答案:

答案 0 :(得分:0)

尝试一下:

function liquidBox($row, $boptionStrength) {
    if ($row["boption0".$boptionStrength] == 2) {
        echo "<input name='orderdetails[" . $row['prod_selectname'] . $boptionStrength . "]' id='" . $row['prod_selectname'] . $boptionStrength . "' placeholder='$boptionStrength' type='number'   class='liq$boptionStrength form-control'" . " disabled />";
    } else {
        echo "<input name='orderdetails[" . $row['prod_selectname'] . $boptionStrength . "]' id='" . $row['prod_selectname'] . $boptionStrength . "' placeholder='$boptionStrength' type='number'   class='liq$boptionStrength form-control' />";
    }
}

<td><?php liquidBox($row, 1); ?></td>

答案 1 :(得分:0)

您可以使用sprintf()将数字值格式化为0前缀的字符串。

对于您来说,sprintf("%02d", $boptionStrength);%表示会有一次转换。 0表示转换将使用此字符进行填充。 2表示最多有2个填充字符。 d用于十进制。

echo sprintf("%02d", 0);    //outputs 00
echo sprintf("%02d", null); //outputs 00
echo sprintf("%02d", 3);    //outputs 03
echo sprintf("%02d", 42);   //outputs 42
echo sprintf("%02d", 123);  //outputs 123

例如,使用您的函数:

function liquidBox($boptionStrength)
{
    $boptionStrength = sprintf("%02d", $boptionStrength);
    if ($row["boption$boptionStrength"] >= 1)
    {
        //your code
    }
}

答案 2 :(得分:0)

由于Cid(sprintf)和Rishat($ row,boptionStrength)的提示,我似乎已经做到了

这是我的最终结果

function liquidBox($row, $boptionStrength, $phtext) 
{
$boptionStrength = sprintf("%02d", $boptionStrength);
if ($row["boption$boptionStrength"] >= 1) 
 /*var_dump($boptionStrength); */

{echo "
    <input 
    name='orderdetails[" . $row['prod_selectname'] . $boptionStrength . "]' 
    id='" . $row['prod_selectname'] . $boptionStrength . "'
    placeholder='$phtext' 
    type='number' 
    class='liq$boptionStrength form-control'" . (($row["boption$boptionStrength"] == 2)?'disabled':"") . "/>";}

}

并且我正在使用以下代码来调用函数

        <td><?php liquidBox($row, 00, '0mg'); ?></td>
        <td><?php liquidBox($row, 03, '3mg'); ?></td>
        <td><?php liquidBox($row, 06, '6mg'); ?></td>
        <td><?php liquidBox($row, 12, '12mg'); ?></td>
        <td><?php liquidBox($row, 18, '18mg'); ?></td>
        <td><?php liquidBox($row, 20, '20mg'); ?></td>

感谢您的帮助