繁体   English   中英

如何正确放置条件如果在PHP字符串

[英]How to put if condition inside php string properly

我有以下代码来打印一些数据,

$html = "<table><tr><th>Email Address</th><th>Event</th><th>Tag</th><th>Time</th></tr>"

    .if(count($result->http_response_body->items) > 0) {
        foreach ($result->http_response_body->items as $key) {.
             "<tr>
             <td>". $key->recipient . "</td>
             <td>". $key->event . "</td>
            <td>" . @$key->tags[0] . "</td>
            <td>" . date("r", $key->timestamp) . "</td>
            </tr>"
        .}

        //fetchLogs($result);
    }. 
     "</table>";

    echo $html;   

当我执行代码时,它会给出语法错误,意外的“ if”条件。 如何在表字符串中插入条件和其他变量。 请帮忙。

你有很多语法错误

$html = "<table><tr><th>Email Address</th><th>Event</th><th>Tag</th>    <th>Time</th></tr>";

if ( count( $result->http_response_body->items ) > 0 ) {
    foreach ( $result->http_response_body->items as $key ) {
        $html .= "<tr>
             <td>" . $key->recipient . "</td>
             <td>" . $key->event . "</td>
            <td>" . @$key->tags[ 0 ] . "</td>
            <td>" . date( "r", $key->timestamp ) . "</td>
        </tr>";
    }

    //fetchLogs($result);
}
$html .= "</table>";

echo $html; 

另外,不要抑制错误( @$key->tags[0] )。 首先使用isset进行正确的检查。 或者,如果您使用的是php7,则可以使用空合并运算符,例如$key->tag[0] ?? 'something else' $key->tag[0] ?? 'something else'

请尝试这个

$html = "<table><tr><th>Email Address</th><th>Event</th><th>Tag</th><th>Time</th></tr>" ;

    if(count($result->http_response_body->items) > 0) {
        foreach ($result->http_response_body->items as $key) {
          $html.=   "<tr>
             <td>". $key->recipient . "</td>
             <td>". $key->event . "</td>
            <td>" . @$key->tags[0] . "</td>
            <td>" . date("r", $key->timestamp) . "</td>
            </tr>";
        }

        //fetchLogs($result);
    } 
     $html.="</table>";

    echo $html;

首先,PHP语句以;结束; 那是分号。

因此,您的第一条语句需要更正为:

<?php
$html = "<table><tr><th>Email Address</th><th>Event</th><th>Tag</th><th>Time</th></tr>";
if (count($result->http_response_body->items) >0) { // Removed dot
  foreach ($result->http_response_body->items as $key) { // Removed dot
    $html .= "<tr><td>" .$key->recipient ."</td>
      <td>" .$key->event ."</td>
      <td>" .@$key->tags[0] ."</td>
      <td>" .date("r", $key->timestamp) ."</td></tr>";
  } // Removed Dot.
// fetchLogs($result);
}
$html .= "</table>";
echo $html;
?>

诀窍很简单,您只需要了解字符串的隐含意义,一旦掌握了这些知识,就可以编写像这样的复杂字符串。

$html = "<table><tr><th>Email Address</th><th>Event</th><th>Tag</th><th>Time</th></tr>";

    if(count($result->http_response_body->items) > 0) {
        foreach ($result->http_response_body->items as $key) {
            $html."<tr>
             <td>". $key->recipient . "</td>
             <td>". $key->event . "</td>
             <td>" . @$key->tags[0] . "</td>
             <td>" . date("r", $key->timestamp) . "</td>
           </tr>";
        }

    }

   $html."</table>";

   echo $html;  

代码中有语法错误。您可以使用此

    $html = "<table><tr><th>Email Address</th><th>Event</th><th>Tag</th>    <th>Time</th></tr>";

    if ( count( $result->http_response_body->items ) > 0 ) {
        foreach ( $result->http_response_body->items as $key ) {
            $html .= "<tr>
                 <td>" . $key->recipient . "</td>
                 <td>" . $key->event . "</td>
                <td>" . @$key->tags[ 0 ] . "</td>
                <td>" . date( "r", $key->timestamp ) . "</td>
            </tr>";
        }


    }
    $html .= "</table>";

echo $html; 

除了使用可能导致大字符串性能下降的字符串连接之外,我个人更喜欢使用添加项的数组-最终内爆以输出到屏幕。

<?php

    $html=array();
    $html[]="
    <table>
        <tr>
            <th>Email Address</th>
            <th>Event</th>
            <th>Tag</th>
            <th>Time</th>
        </tr>";

    if ( count( $result->http_response_body->items ) > 0 ) {
        foreach ( $result->http_response_body->items as $key ) {
            $html[]= "
            <tr>
                <td>{$key->recipient}</td>
                <td>{$key->event}</td>
                <td>{@$key->tags[ 0 ]}</td>
                <td>" . date( "r", $key->timestamp ) . "</td>
            </tr>";
        }
    }

    $html[]= "</table>";

    echo implode( PHP_EOL, $html);
    unset( $html );
?>

另一种方法是:

<table>
   <tr>
      <th>Email Address</th>
      <th>Event</th>
      <th>Tag</th>
      <th>Time</th>
   </tr>
   <?php if(count($result->http_response_body->items) > 0) : ?>
       <?php foreach ($result->http_response_body->items as $key):?>
            <tr>
                <td><?php echo $key->recipient; ?></td>
                <td><?php echo $key->event?; ?></td>
                <td><?php echo @$key->tags[0]; ?></td>
                <td><?php echo date("r", $key->timestamp); ?></td>
            </tr>
       <?php endforeach;?>
   <?php endif;?>
</table>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM