2016-01-11 4 views
0

Я следующий код, чтобы напечатать некоторые данные,Как поставить, если условие внутри 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) { 
     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 и другие переменные внутри этой строки таблицы. Пожалуйста помоги.

ответ

1

у вас есть много ошибок синтаксиса

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

также DonT Подавите ошибки (@$key->tags[0]). Сделайте правильную проверку с isset. Или, если вы находитесь на php7, вы можете использовать оператор null coalesce, например $key->tag[0] ?? 'something else'.

+0

Спасибо большое. Оно работает! –

+0

нет его работы. Спасибо –

0

Пожалуйста, попробуйте это

$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; 
+0

Спасибо. Оба решения приняты –

+0

'} .' ?????????? – RiggsFolly

0

Во-первых заявления 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>" [email protected]$key->tags[0] ."</td> 
     <td>" .date("r", $key->timestamp) ."</td></tr>"; 
    } // Removed Dot. 
// fetchLogs($result); 
} 
$html .= "</table>"; 
echo $html; 
?> 
0

Хитрость довольно просто, вы просто должны понять, струнный concatination, и как только вы разберетесь, что вы можете создавать сложные строки, как это один.

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

есть синтаксические ошибки в code.You могут использовать эту

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

Вместо того чтобы использовать конкатенацию, которые могут иметь потери производительности с большими строками мои личные предпочтения, чтобы использовать массив, в который пункты добавляются - в конце выводятся на вывод на экран.

<?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); 
?> 
0

Другой способ сделать это:

<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>