有没有更有效的方法来运行我的PHP IF…ELSEIF语句?

有没有更有效的方法来运行我的PHP IF…ELSEIF语句?,php,if-statement,Php,If Statement,这是我刚刚添加到购物车中的一个片段,它基本上呈现一个包含4个数量选项的选择框,并刷新页面。最初,有一个简单的输入框,用户可以使用它来操作数量,但在开始结账之前,一小群用户实际上并没有点击“更新购物车”,所以我决定更加主动。撇开UX实践和AJAX方法不谈,我只是好奇这些选项的冗余是否在PHP中是必要的。我怎样才能使它更有效率 <select name="quantity" onchange="return updateCart();"> <?php if($this->ge

这是我刚刚添加到购物车中的一个片段,它基本上呈现一个包含4个数量选项的选择框,并刷新页面。最初,有一个简单的输入框,用户可以使用它来操作数量,但在开始结账之前,一小群用户实际上并没有点击“更新购物车”,所以我决定更加主动。撇开UX实践和AJAX方法不谈,我只是好奇这些选项的冗余是否在PHP中是必要的。我怎样才能使它更有效率

<select name="quantity" onchange="return updateCart();">
<?php if($this->getQty() == 1) : ?>
    <option value="1" selected="selected">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
<?php elseif($this->getQty() == 2) : ?>
    <option value="1">1</option>
    <option value="2" selected="selected">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
<?php elseif($this->getQty() == 3) : ?>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3" selected="selected">3</option>
    <option value="4">4</option>
<?php elseif($this->getQty() == 4) : ?>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4" selected="selected">4</option>
<?php else : ?>
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
<?php endif; ?>
 </select>

1.
2.
3.
4.
1.
2.
3.
4.
1.
2.
3.
4.
1.
2.
3.
4.
1.
2.
3.
4.

首先,只调用
getQty()
函数一次。保存返回值,然后进行检查

第二,无需重复所有选项。根据实际用例的不同,使用循环或这样做可能更有意义

<select name="quantity" onchange="return updateCart();">
<?php $qty = $this->getQty(); ?>
    <option value="1" <?php if($qty == 1): ?>selected="selected"<?php endif; ?>>1</option>
    <option value="2" <?php if($qty == 2): ?>selected="selected"<?php endif; ?>>2</option>
    <option value="3" <?php if($qty == 3): ?>selected="selected"<?php endif; ?>>3</option>
    <option value="4" <?php if($qty == 4): ?>selected="selected"<?php endif; ?>>4</option>
</select>

>1
>2
>3
>4
使用循环的示例

<select name="quantity" onchange="return updateCart();">
<?php $qty = $this->getQty();
    for($i=1; $i<=4; $i++):
?>
<option value="<?php echo $i; ?>" <?php if($qty == $i): ?>selected="selected"<?php endif; ?>><?php echo $i; ?></option>
<?php endfor; ?>
</select>


首先,只调用一次
getQty()
函数。保存返回值,然后进行检查

第二,无需重复所有选项。根据实际用例的不同,使用循环或这样做可能更有意义

<select name="quantity" onchange="return updateCart();">
<?php $qty = $this->getQty(); ?>
    <option value="1" <?php if($qty == 1): ?>selected="selected"<?php endif; ?>>1</option>
    <option value="2" <?php if($qty == 2): ?>selected="selected"<?php endif; ?>>2</option>
    <option value="3" <?php if($qty == 3): ?>selected="selected"<?php endif; ?>>3</option>
    <option value="4" <?php if($qty == 4): ?>selected="selected"<?php endif; ?>>4</option>
</select>

>1
>2
>3
>4
使用循环的示例

<select name="quantity" onchange="return updateCart();">
<?php $qty = $this->getQty();
    for($i=1; $i<=4; $i++):
?>
<option value="<?php echo $i; ?>" <?php if($qty == $i): ?>selected="selected"<?php endif; ?>><?php echo $i; ?></option>
<?php endfor; ?>
</select>

$quantity=$this->getQty();
对于($i=1;$i
$quantity=$this->getQty();
对于($i=1;$i这个怎么样:

<select name="quantity" onchange="return updateCart();">
    <option value="1" <? echo ($this->getQty()==1?'selected="selected"':""); ?> >1</option>
    <option value="2" <? echo ($this->getQty()==2?'selected="selected"':""); ?> >2</option>
    <option value="3" <? echo ($this->getQty()==3?'selected="selected"':""); ?> >3</option>
    <option value="4" <? echo ($this->getQty()==4?'selected="selected"':""); ?> >4</option>
</select>

>1
>2
>3
>4
它不会使你的代码更快,但会使代码更小、更清晰

如果你的选项越来越多,考虑一个for循环。

这个如何:

<select name="quantity" onchange="return updateCart();">
    <option value="1" <? echo ($this->getQty()==1?'selected="selected"':""); ?> >1</option>
    <option value="2" <? echo ($this->getQty()==2?'selected="selected"':""); ?> >2</option>
    <option value="3" <? echo ($this->getQty()==3?'selected="selected"':""); ?> >3</option>
    <option value="4" <? echo ($this->getQty()==4?'selected="selected"':""); ?> >4</option>
</select>

>1
>2
>3
>4
它不会使你的代码更快,但会使代码更小、更清晰


如果你的选项有很多,考虑一个for循环。

这有点浓缩,但我不认为它更有效或更好,但是你可能会喜欢它。

<select name="quantity" onchange="return updateCart();">
    <?php for($i=1;$i<5;$i++): ?>
    <option value="<?php echo $i; ?>" <?php echo ( $this->getQty() == $i ? 'selected="selected"' : '' ); ?>><?php echo $i; ?></option>
    <?php endfor; ?>
</select>

>

这有点精简,但我不认为它更有效或更好,但您可能会喜欢它

<select name="quantity" onchange="return updateCart();">
    <?php for($i=1;$i<5;$i++): ?>
    <option value="<?php echo $i; ?>" <?php echo ( $this->getQty() == $i ? 'selected="selected"' : '' ); ?>><?php echo $i; ?></option>
    <?php endfor; ?>
</select>

>

既然有值,为什么不切换到开关。既然有值,为什么不切换到开关。