PHP NULL/Spaces 的输出

PHP Output of NULL/Spaces

我正在尝试使用 php 从 mysql 输出。我正在输出的 SQL 查询包含多个连接,其中一些值为 NULL。当我回显输出时,空值的 spaces 为空。如何摆脱空 space?我在要输出的每个值之间都有换行符,但 NULL 值只是放置一个空 space。所以我的输出看起来有点像这样。

长什么样子

戴夫·史密斯
主题 1

主题 3

约翰·史密斯
主题 1
主题 2

主题 4

我想要的样子

戴夫·史密斯
主题 1
主题 3

约翰·史密斯
主题 1
主题 2
主题 4

我已经尝试了一些 php trim 函数,但 none 似乎有效。相关代码如下。

$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>";
 }

您可以尝试以下代码:

$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>";

When I echo the output I get empty spaces for the NULL values

$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>";

空 space 的原因是无论是否存在任何 PHP 值,您都在输入 <br/>

建议的备选方案:

  • 将值放入一个数组中。
  • 清除数组中的所有 falsey / null
  • implode 将数组转化为最终的字符串。

a) 将值放入数组中:

$subject[1] = $rows['subject1'];
$subject[2] = $rows['subject2'];
$subject[3] = $rows['subject3'];
$subject[4] = $rows['subject4'];

b) 清除 nullreference

$subjectOutput = array_filter($subject, 'strlen');

注意:如果您不关心其他 falsey 值,例如 0,那么您可以简单地进行更基本的 array_filter() 调用,例如 = array_filter($subject);.

c) Implode 数组。

$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>";