我正在尝试使用php从mysql输出。我输出的SQL查询包含几个联接,其中一些值为NULL。当我回显输出时,我会得到空的NULL值。我该如何摆脱这片空地?我想输出的每个值之间都有换行符,但NULL值只是放了一个空格。所以我的输出看起来有点像这样。
它看起来像什么
Dave Smith
科目1
受试者3
John Smith
科目1
专题2
受试者4
我希望它看起来像什么
Dave Smith
科目1
主题3
John Smith
科目1
学科2
课程4
我尝试过一些php trim函数,但似乎都不起作用。相关代码如下。
$resultSet = $db->query ("...my query");
echo $resultSet -> num_rows;
While($rows = $resultSet ->fetch_assoc())
{
$FirstName = ($rows['First_Name']);
$Surname = ($rows['Surname']);
$subject1 = ($rows['subject1']);
$subject2 = ($rows['subject2']);
$subject3 = ($rows['subject3']);
$subject4 = ($rows['subject4']);
$output .= "<p> $FirstName $Surname <br/> Chosen Subjects <br/> $subject1 <br/> $subject2 <br/>
$subject3 <br/> $subject4 </p>";
}
当我回显输出时,我会得到NULL值的空格
$subject1 = ($rows['subject1']); $subject2 = ($rows['subject2']); $subject3 = ($rows['subject3']); $subject4 = ($rows['subject4']); $output .= "<p> $FirstName $Surname <br/> Chosen Subjects <br/> $subject1 <br/> $subject2 <br/> $subject3 <br/> $subject4 </p>";
空空间的原因是,无论是否存在任何PHP值,都要放入<br/>
。
建议的替代方案:
- 将值放入一个数组中
- 清除阵列中的任何
falsey
/null
值 implode
将数组转换为最终字符串
a(将值放入数组:
$subject[1] = $rows['subject1'];
$subject[2] = $rows['subject2'];
$subject[3] = $rows['subject3'];
$subject[4] = $rows['subject4'];
b( 清除null
值参考
$subjectOutput = array_filter($subject, 'strlen');
注意:如果您不关心其他falsey
值,例如0,那么您可以简单地执行更基本的array_filter()
调用,例如= array_filter($subject);
c( 实现数组。
$subjectString = implode($subjectOutput, '<br/>');
示例:
$subject[1] = "horses";
$subject[2] = 12;
$subject[3] = 0;
$subject[4] = null;
$subject[5] = "cats";
$subjectOutput = array_filter($subject, 'strlen');
//$subject[1] = "horses";
//$subject[2] = 12;
//$subject[3] = 0;
//$subject[5] = "cats";
/***
* simply print the sting and voila!
***/
$subjectString = implode($subjectOutput, '<br/>');
// $subjectString = "horses<br/>12<br/>0<br/>cats";
$output .= "<p> $FirstName $Surname <br/> Chosen Subjects <br/> ".$subjectString." </p>";
您可以尝试以下代码:
$output = "<p>{$FirstName} {$Surname}<br/>Chosen Subjects:<br/>";
$output .= (!empty($subject1)) ? "{$subject1}<br/>" : "";
$output .= (!empty($subject2)) ? "{$subject2}<br/>" : "";
$output .= (!empty($subject3)) ? "{$subject3}<br/>" : "";
$output .= (!empty($subject4)) ? "{$subject4}<br/>" : "";
$output .= "</p>";