重写这个重复if语句的最佳方法是什么?

时间:2015-06-16 06:58:10

标签: php if-statement

我认为有一种更简单的方式来编写此代码,但不确定采用何种方法。基本上,我想检查每个变量是否存在,如果存在,请将相应的标记添加到页面中。

任何建议都会很棒。

<?php
    $words = get_field('words');
    $photography = get_field('photography');
    $architect = get_field('architect');
?>

<div class="panel">
    <?php if( $words ): ?>
        <div>
            <p><span>Words</span><span><?php echo $words;?></span></p>
        </div>
    <?php endif ;?>

    <?php if( $photography ): ?>
        <div>
            <p><span>Photography</span><span><?php echo $photography;?></span></p>
        </div>
    <?php endif; ?>

    <?php if( $architect ): ?>
        <div>
            <p><span>Architect</span><span><?php echo $architect;?></span></p>
       </div>
    <?php endif; ?>
</div>

4 个答案:

答案 0 :(得分:5)

您可以使用array&amp; loop -

<?php
    $fields = array();
    $fields['words'] = get_field('words');
    $fields['photography'] = get_field('photography');
    $fields['architect'] = get_field('architect');
?>

<div class="panel">
    <?php foreach($fields as $key => $value): 
         if($value)
    ?>
        <div>
            <p><span><?php echo ucwords($key);?></span><span><?php echo $value;?></span></p>
        </div>
    <?php 
         endif;
    endforeach;?>
</div>

答案 1 :(得分:5)

如果您想拥有自己的标签,请使用适当的标签创建一个字段数组。

<div class="panel">
    <?php
    $fields = array (
            'words' => 'Words',
            'photography' => 'Photography',
            'architect' => 'Architect' 
    );
    foreach ( $fields as $field => $label ) {
        $value = get_field ( $field );
        if (!empty($value)) {
            echo '<div>
                <p><span>' . $label . '</span><span>' . $value . '</span></p>
            </div>';
        }
    }
    ?>
</div>

答案 2 :(得分:1)

<?php
   $required_fields = array("words","photography","architect");
   $data = array();
   foreach($required_fields as $field)
   {
        $data[$field] = get_field($field);
   }
?>


<div class="panel">
    <?php foreach($data as $data_field=>$data_value): 
         if($data_value)
    ?>
        <div>
            <p><span><?=$data_field?></span><span><?=$data_value?></span></p>
        </div>
    <?php 
         endif;
    endforeach ;?>
</div>

答案 3 :(得分:1)

您可以创建这样的函数,然后迭代它返回的数据以输出您的内容

<?php
    //define a function to fetch data in specific fields
    function fetch_data($keys=array()){
        $data = array();
        foreach($keys as $key){
            $val = get_field($key);
            if(!empty($val)){
                $data[$key] = $val;
            }
        }
        return $data;
    }

    //now you can easily add or change your fields
    $data = fetch_data(array('words','photography','architect'));
?>

<div class="panel">

<?php 
    foreach($data as $field){
        if(isset($data[$field])){
            $val = $data[$field];
            ?>
            <div>
                <p><span><?php echo ucfirst($field); ?></span><span><?php echo $val; ?></span></p>
            </div>
            <?php 
        }
    }
?>