【问题标题】:PHP Output of NULL/SpacesNULL/空格的PHP输出
【发布时间】:2020-04-27 13:52:55
【问题描述】:

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

是什么样子的

戴夫·史密斯
主题 1

主题 3

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

主题 4

我希望它是什么样子

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

约翰·史密斯
主题 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>";
 }

【问题讨论】:

  • 顺便说一句,这里括号($rows['subject4'])的目的是什么?
  • 没有目的。尝试了各种修剪功能后忘记删除它们

标签: php mysql null trim


【解决方案1】:

当我回显输出时,我得到 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>";

您的空白空间的原因是您输入&lt;br/&gt;,无论是否存在任何PHP值。

建议的替代方案:

  • 将值放入数组中。
  • 从数组中清除任何 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>";

【讨论】:

    【解决方案2】:

    你可以试试下面的代码:

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

    【讨论】:

    • 不管怎样,empty(0)empty('0') 都返回 true
    • 那里有很多重复。 Dont' Repeat Yourself.
    • @Martin 基于问题中的代码示例,显然需要保持简单,为此简单的重复代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多