仅显示可用变量但不使用IF,是否可能?

时间:2012-11-01 15:57:50

标签: php

假设我有这个'个人资料页'代码:

<table border="1">
<tr>
<td>First Name : </td>
<td>John</td>
</tr>
<tr>
<td>Last Name : </td>
<td>Doe</td>
</tr>
<tr>
<td>Hobby : </td>
<td>Soccer</td>
</tr>
...
</table>

并且这些配置文件存储在数据库中,某些字段是可选的。例如:爱好,雅虎信使ID,推特ID等

如何有效地显示所有可用信息?我的意思是,减少使用IF ...因为目前这就是我正在做的事情:

<table border="1">
<tr>
<td>First Name : </td>
<td>John</td>
</tr>
<tr>
<td>Last Name : </td>
<td>Doe</td>
</tr>

<?php
if (!empty($hobby)){
echo '<tr>
<td>Hobby : </td>
<td>'.$hobby.'</td>
</tr>';}
?>

<?php
if (!empty($YahooID)){
echo '<tr>
<td>Yahoo ID : </td>
<td>'.$YahooID.'</td>
</tr>';}
?>

...
</table>

3 个答案:

答案 0 :(得分:4)

迭代你的属性(firstName,lastName ...)或列(DB side),如果设置,在某个数组中添加一个键/值条目:nameOfAttribute,valueOfAttribute。

渲染HTML时,循环遍历此数组

echo '<tr><td>'.$key.' : '</td><td>'.$value+'</td></tr>';

或者,

function renderIfSet($value, $title)
{
   if ($value) return '<tr><td>$title :</td><td>$value</td></tr>';
}

你的代码变成了:

<? echo renderIfSet($hobby, "Hobby") ?>
<? echo renderIfSet($YahooID, "Yahoo ID") ?>

答案 1 :(得分:3)

    function someAction($data) {
        if (!empty($data['data'])) {
            return '<tr>
            <td>{$data[title]} : </td>
            <td>'.$data['data'].'</td>
            </tr>';             
        }
    }

$datas = array(
  array('data' => $YahooID, 'title' => 'YahooID'),
  .... );

foreach($datas as $k => $v) {
   echo someAction($)
}

类似的东西

答案 2 :(得分:2)

创建一个函数......

function checkVal($label,$value){
    if(!empty($value)){
        $row .= '<td>'.$label.'</td>';
        $row .= '<td>'.$value.'</td>';
    }
}

调用你的函数......

checkVal('Hobby',$hobby);