为什么我的功能没有输出任何东西?

我只想学习一些代码 . 我这里有一些代码,这些代码重复了很多次

它可能是凌乱的代码,因为我不是专业人士 .

<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)

2 years ago

试试这个:

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>

2 years ago

感谢来自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>

谢谢你的帮助

2 years ago

您可以使用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
    }
}