在PHP中压缩重复代码

时间:2015-06-30 07:00:48

标签: php

所以,我跟着重复使用不同值的代码:

<select placeholder="Any Max number" name="sp_maxprice" id="sp_maxprice" class="btn-block">
    <option <?php selected('50000000', isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : ''); ?> value="50000000"><?php _e('No Max', 'my_site') ?></option>
    <option <?php selected('25000', isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : ''); ?> value="25000">25,000</option>
    <option <?php selected('50000', isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : ''); ?> value="50000">50,000</option>
    <option <?php selected('75000', isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : ''); ?> value="75000">75,000</option>
    <option <?php selected('100000', isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : ''); ?> value="100000">100,000</option>
</select>

正如您所看到的那样,选项非常相似,只有25,000从第一个选项开始增加,除了第一个选项。

有没有办法压缩这些代码?这个数字实际上一直到10,000,000,并且数字值除外38 similar codes

这些感觉就像是一种无效的编码方式。

任何帮助将不胜感激!

由于

3 个答案:

答案 0 :(得分:3)

更改

<select placeholder="Any Max number" name="sp_maxprice" id="sp_maxprice" class="btn-block">
<option <?php selected('50000000', isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : ''); ?> value="50000000"><?php _e('No Max', 'my_site') ?></option>
<option <?php selected('25000', isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : ''); ?> value="25000">25,000</option>
<option <?php selected('50000', isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : ''); ?> value="50000">50,000</option>
<option <?php selected('75000', isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : ''); ?> value="75000">75,000</option>
<option <?php selected('100000', isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : ''); ?> value="100000">100,000</option>

类似

<?php
 $opts = array(
    50000000 => _e('No Max', 'my_site'),
    25000 => '25,000',
    50000 => '50,000',
    ...
  );
?>


   <select placeholder="Any Max number" name="sp_maxprice" id="sp_maxprice" class="btn-block">
    <?php  if( $_POST['sp_maxprice'] == $value ) {
               $selected = 'selected="selected"';
           }else{
               $selected = '';
          }
        foreach( $opts as $value => $caption ){

    ?>
      <option  value="<?php echo $value; ?>" $selected ><?php echo $caption; ?></option>
    <?php } ?>
    </select>

答案 1 :(得分:2)

尝试这样的事情

    <select placeholder="Any Max number" name="sp_maxprice" id="sp_maxprice" class="btn-block">
    <option <?php selected('50000000', isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : ''); ?> value="50000000"><?php _e('No Max', 'my_site') ?></option>
<?php
        for($i=25000; $i<=1000000; $i+=25000) {
            echo '<option '. selected($i, isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : '') . ' value='.$i.'>'.number_format($i, 0).'</option>';
        }
    ?>
</select>

答案 2 :(得分:1)

<select placeholder="Any Max Price" name="sp_maxprice" id="sp_maxprice" class="btn-block">
<?php
$val = 25000;
do {
    echo '<option '. selected('50000000', isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : '') .' value="50000000">'. _e('No Max', 'my_site') .'</option>';
} while ($val < 100000){
    echo '<option '. selected($val, isset($_GET['sp_maxprice']) ? $_GET['sp_maxprice'] : '') .' value="'. $val .'">'. $val .'</option>';
    $val = $val + 25000;
}
?>
</select>

这可能符合:)