【问题标题】:Insert a character (-) if result is empty [duplicate]如果结果为空,则插入一个字符 (-) [重复]
【发布时间】:2023-03-28 10:32:01
【问题描述】:

我有以下代码:

 $result = $conn->query($query);
  if ($result->num_rows > 0) {

 while($row = $result->fetch_assoc()) 
      { 
  echo "<tr>"; 
  echo "<td>" . preg_replace('/[^0-9]+/','',$row['total']) . "</td>";  
  echo "</tr>"; 
   }

我尝试做的是如果输出为空,则插入 (-) 字符。只有在没有值输出的情况下。

我试过了:

 $result = $conn->query($query);
  if ($result->num_rows > 0) {

 $total = $total ?? "" ?: "-";

 while($row = $result->fetch_assoc()) 
      { 
  echo "<tr>"; 
  echo "<td>" . $total . "</td>";   
  echo "</tr>"; 
   }

这会将所有输出替换为 (-)。 我怎样才能做到这一点?请。谢谢你的帮助!

请注意,如果preg_replace('/[^0-9]+/','',$row['total']) 的结果为空,则应插入(-)字符。

输入是这样的:

100.
80.
70.
etc

预期的输出会是这样的:

Total
100
90
-
80
70
-
10

【问题讨论】:

  • @Roshan 你的意思当然是if。但是,是的,你不需要正则表达式。在你的 for 循环中,检查 $row['total'] 的值
  • 我们有想要的输出,但我们可以输入$row['total'] 的样本吗?
  • 然后在 while 循环中添加另一个 if else 语句,检查 $row['total'] 是否有值然后转换它的值,否则用 "-" 替换它。像这样的东西:if($row['total'] == " "){ echo $row['total']; }else{ echo "-"; }
  • 非数字行的值是什么?空的空间? null?还有什么?你需要一个降序的for循环吗?如果没有 90 行,那么该位置的预期输出如何?也许您想在查询中添加/UNION 一些静态行。我们不知道。
  • 我认为你应该尝试在数据库查询中使用,因为它会加快你的代码执行时间

标签: php


【解决方案1】:

您可以检查总值,如果它是空的,则将其替换。例如:

while($row = $result->fetch_assoc()) { 
  $total = empty($row['total']) ? '-' : preg_replace('/[^0-9]+/','',$row['total']);
  echo "<tr>"; 
  echo "<td>" . $total . "</td>";  
  echo "</tr>"; 
}

【讨论】:

  • 为什么要使用正则表达式?
  • 如果零是有效数字,此解决方案将损坏数据。
【解决方案2】:

你也可以在mysql中使用case语句

SELECT (CASE
    WHEN total regexp '^[0-9]+$'  THEN total

    ELSE '-' END) as total
FROM `tbl_order`

其中regexp '^[0-9]+$' 匹配变量total 是否为numeric

通过使用 case 我们检查 total 是否为数字然后打印total 否则-

【讨论】:

  • 这不起作用,因为 OP 的数据有尾随点。
  • 我们从未被告知不合格的行包含什么。
  • 如果 OP 的数据有尾随点,我们可以使用十进制 reg exp '^[0-9]+$' '^[0-9]*[.]{0,1}[0-9]*$' 然后使用 ceil(total)
  • 你的正则表达式变得一团糟。我为此任务推荐了一个 SQL 解决方案,但制作一个干净的解决方案需要 OP 澄清表格列中的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
  • 1970-01-01
相关资源
最近更新 更多