php if else检查字符串内部

时间:2013-06-10 01:55:24

标签: php ajax

我试图将少量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 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

使用三元运算符:

'text' . (strpos($myrow['make'], 'foo') !== FALSE ? '<tr>...</tr>' : '') . 'more text'

答案 2 :(得分: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>';

答案 3 :(得分: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>';

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