假设我有这个'个人资料页'代码:
<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>
答案 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);