質問

次のようなレガシーコードを入手しました:

<?PHP
    if(isset(

次のようなレガシーコードを入手しました:

<*>

正確な理由はわかりませんが、これは機能しているようです。 ?pagina = homepageがある場合はhtmlcode1がロードされ、pagina varが存在しないか、何か他のもの(実際には他の何かと一緒に見たことがありません。 Webサイトはphp4を使用しています(正確なバージョンはわかりません)。 しかし、本当に、これはどのように機能しますか?マニュアルを見たところ、issetはboolを返すと言っています。

誰ですか?

GET['pagina'])=="homepage") { ?> HtmlCode1 <?php } else { ?> HtmlCode2 <?php } ?>

正確な理由はわかりませんが、これは機能しているようです。 ?pagina = homepageがある場合はhtmlcode1がロードされ、pagina varが存在しないか、何か他のもの(実際には他の何かと一緒に見たことがありません。 Webサイトはphp4を使用しています(正確なバージョンはわかりません)。 しかし、本当に、これはどのように機能しますか?マニュアルを見たところ、issetはboolを返すと言っています。

誰ですか?

役に立ちましたか?

解決

問題は、&quot; ==&quot;型依存の比較ではありません。 (空ではない)文字列はすべて「等しい」ブール値trueに、ただし同一ではありません(そのためには&quot; ===&quot;演算子を使用する必要があります)。

簡単な例、この動作が見られる理由:
http: //codepad.org/aNh1ahu8

ドキュメントの詳細については、次を参照してください:
http://php.net/manual/en/language.operators.comparison.php
http://ca3.php.net/manual/en/types.comparisons.php (==との緩やかな比較&quot; table特に)

他のヒント

isset()はtrueまたはfalseを返します。ブール比較では、&quot; homepage&quot; true と評価されます。本質的にここにあります:

if ( isset(

isset()はtrueまたはfalseを返します。ブール比較では、&quot; homepage&quot; true と評価されます。本質的にここにあります:

<*>

paginaが何かに等しい場合、HtmlCode1が表示されます。設定されていない場合は、HtmlCode2が表示されます。

これを確認するために試してみましたが、?pagina = somethingelse にアクセスすると、HtmlCode2が表示されないGET['pagina']) == true )

paginaが何かに等しい場合、HtmlCode1が表示されます。設定されていない場合は、HtmlCode2が表示されます。

これを確認するために試してみましたが、?pagina = somethingelse にアクセスすると、HtmlCode2が表示されない

「ホームページ」とtrue / falseを比較することは実際には意味をなさないため、バグだと思われます。コードは実際には次のようになります。

if (isset(

「ホームページ」とtrue / falseを比較することは実際には意味をなさないため、バグだと思われます。コードは実際には次のようになります。

<*>GET['pagina']) && (

「ホームページ」とtrue / falseを比較することは実際には意味をなさないため、バグだと思われます。コードは実際には次のようになります。

<*>GET['pagina'] == "homepage")) { }

これがどのように機能するかのアイデア(前述の&quot; homepage&quot; == trueを除く):

  • どこかで再定義されましたか?
  • PHPの自己修正バージョンですか?
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top