代码之家  ›  专栏  ›  技术社区  ›  Max

如果结果为空,则插入字符(-)[重复]

php
  •  0
  • Max  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我有以下代码:

     $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
    
    2 回复  |  直到 6 年前
        1
  •  2
  •   Maksym Fedorov    6 年前

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

    while($row = $result->fetch_assoc()) { 
      $total = empty($row['total']) ? '-' : preg_replace('/[^0-9]+/','',$row['total']);
      echo "<tr>"; 
      echo "<td>" . $total . "</td>";  
      echo "</tr>"; 
    }
    
        2
  •  0
  •   Pritamkumar Ras C-kay sKatle    6 年前

    也可以在mysql中使用case语句

    SELECT (CASE
        WHEN total regexp '^[0-9]+$'  THEN total
    
        ELSE '-' END) as total
    FROM `tbl_order`
    

    哪里 regexp '^[0-9]+$' 是否匹配变量 total numeric 或不

    通过使用 案例 我们检查是否 全部的 是数字然后打印 全部的 否则 -