3

私はまだphpの初心者であり、バックエンドフレームワークにcodeigniterを使用しています。table.phpリアルタイムでhtmlテーブルを生成するファイルがあります。次に、いくつかの問題が発生します。

$output_string .= "<td>".($row->isactive == "0") ? "Activated":"Deactivated"."</td>";

上記のコードでは何も得られませんが、次のように少し変更されています。

$isactive = ($row->isactive == "0") ? "Activated":"Deactivated";
$output_string .= "<td>".$isactive."</td>";

結果が出たので、質問は、なぜですか?

PHPは文字列連結で疑問符演算子をサポートしていませんか?

4

6 に答える 6

2

それはそれをサポートします、ちょうどそれの周りにいくつかの括弧を入れてください:

$output_string .= "<td>".(($row->isactive == "0") ? "Activated":"Deactivated")."</td>";
于 2012-09-27T04:59:52.377 に答える
1

かっこが足りません。代わりにこれを試してください:

$output_string .= "<td>".(($row->isactive == "0") ? "Activated":"Deactivated")."</td>";

余分な括弧のセットに注意してください。

あなたがちょうど置く場合:

$output_string .= "<td>".($row->isactive == "0") ? "Activated":"Deactivated"."</td>";

PHPインタープリターは表示を試みます$row->isactive == "0"。そのため、PHPインタープリターが必要な処理を実行するには、追加の括弧のセットで囲む必要があります。

于 2012-09-27T05:00:06.017 に答える
1

そうではありませんが、「:」演算子の後に

:"Deactivated"."</td>";

このように試してみたい場合は、falseの単一のステートメントとして扱う必要があります

$output_string .= "<td>".(($row->isactive == "0") ? "Activated":"Deactivated")."</td>";
于 2012-09-27T05:01:04.773 に答える
1

三項演算全体を()角かっこで囲む必要があります

$output_string .= "<td>".($row->isactive == "0" ? "Activated":"Deactivated")."</td>";

それはあなたが望むものを与えるでしょう。

何が起こっているのかについての私の推測は"<td>"、のブール結果が追加され、($row->isactive == "0")あなたは常に"Activated</td>"あなたの結果として得られるでしょう。

于 2012-09-27T05:02:03.430 に答える
1

PHPでの連結は、三項演算子よりも優先されます。したがって、最初に式を実行し、次にその式の結果を実行します(空でない文字列をブール値に変換すると解釈されるため、"<td>".($row->isactive == "0")常に等しくなります)。したがって、コードの結果は常に単語です。truetrueActivated

于 2012-09-27T05:10:53.093 に答える
0

()このように連結の前後で使用すると動作します

$output_string .= "<td>".(($row->isactive == "0") ? "Activated":"Deactivated")."</td>";
于 2012-09-27T05:00:38.373 に答える