1

假设我有这个“个人资料页面”代码:

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

并且这些配置文件是从数据库中存储的,并且某些字段是可选的。例如:hobby、yahoo messenger ID、twitter 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>
4

3 回答 3

4

遍历您的属性(firstName、lastName...)或列(DB 端),如果设置,则在某个数组中添加一个键/值条目: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") ?>
于 2012-11-01T16:02:50.073 回答
4
    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($)
}

类似的东西

于 2012-11-01T16:06:49.073 回答
2

创建一个函数...

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

调用你的函数...

checkVal('Hobby',$hobby);
于 2012-11-01T16:04:37.767 回答