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 =    '<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 に答える
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 に答える