0

我试图将一些html代码和php代码压缩成一个字符串。(然后将字符串传递回 ajax 回调并 ajax 打印字符串)。

这是我的代码。

$sql = "SELECT * FROM pfilter WHERE id = '$getId'";
$result = mysql_query($sql);

while ($myrow = mysql_fetch_array($result)){

    $output_string =    '<table>';
    $output_string .=   '<tr><td>Make</td><td>'.$myrow['make'].'</td></tr>
                        <tr><td>Model</td><td>'.$myrow['model'].'</td></tr>
                        <tr><td>Series</td><td>'.$myrow['series'].'</td></tr>
                        <tr><td>Years</td><td>'.$myrow['years'].'</td></tr></table>';

但我想检查是否$myrow['make']有任何价值,如果有,则打印整个tr. 否则它应该跳过整个tr. 检查这个的最好方法是什么?我尝试if else使用该字符串放入该字符串,'. .'但没有成功。我必须在$output_string .=之间一次又一次地使用ifelse吗?我是 PHP 新手,如果你们能在这里帮助我,我很高兴。

4

4 回答 4

2

您可以将长度操作与三元运算符结合使用。

$output_string .= (strlen($myrow['make']) > 0 ? '<tr><td>Make</td><td>'.$myrow['make'].'</td></tr>' : '');

您只是检查字符串是否有任何长度,如果有,则返回带有值的整行。如果不是,则返回一个空字符串。您可以在此处阅读有关三元运算符的更多信息:http: //php.net/manual/en/language.operators.comparison.php

于 2013-06-10T02:11:06.507 回答
0

使用三元运算符:

'text' . (strpos($myrow['make'], 'foo') !== FALSE ? '<tr>...</tr>' : '') . 'more text'
于 2013-06-10T02:02:04.437 回答
0

是的!您可以在字符串中使用三元运算符。所以,这里是:

$output_string .=   (!empty($myrow['make'])?'<tr><td>Make</td><td>'.$myrow['make'].'</td></tr>
                       : '' )
                    <tr><td>Model</td><td>'.$myrow['model'].'</td></tr>
                    <tr><td>Series</td><td>'.$myrow['series'].'</td></tr>
                    <tr><td>Years</td><td>'.$myrow['years'].'</td></tr></table>';

用括号括起来条件就可以了。

于 2013-06-10T02:18:43.270 回答
0

".=" 运算符将字符串连接在一起。

这个:

$output_string =    '<table>';
$output_string .=   '<tr><td>Make</td><td>'.$myrow['make'].'</td></tr>
                     <tr><td>Model</td><td>'.$myrow['model'].'</td></tr>
                     <tr><td>Series</td><td>'.$myrow['series'].'</td></tr>
                     <tr><td>Years</td><td>'.$myrow['years'].'</td></tr></table>';

相当于:

$output_string =    '<table>';
$output_string .=   '<tr><td>Make</td><td>'.$myrow['make'].'</td></tr>';
$output_string .=   '<tr><td>Model</td><td>'.$myrow['model'].'</td></tr>';
$output_string .=   '<tr><td>Series</td><td>'.$myrow['series'].'</td></tr>';
$output_string .=   '<tr><td>Years</td><td>'.$myrow['years'].'</td></tr></table>';

所以把你的逻辑如下:

$output_string =    '<table>';
if (@$myrow['make']) {
    $output_string .=   '<tr><td>Make</td><td>'.$myrow['make'].'</td></tr>';
}
$output_string .=   '<tr><td>Model</td><td>'.$myrow['model'].'</td></tr>';
$output_string .=   '<tr><td>Series</td><td>'.$myrow['series'].'</td></tr>';
$output_string .=   '<tr><td>Years</td><td>'.$myrow['years'].'</td></tr></table>';
于 2013-06-10T02:12:15.633 回答