- 締切済み
phpについてお聞きしたいです
============================ <?php if(!is_array($data)){ ?> <meta http-equiv="refresh" content="0;URL=./error.html" /> <?php } ?> ============================ 上記の意味をわかる方がいれば教えて下さい!
- みんなの回答 (1)
- 専門家の回答
みんなの回答
まず、まるまる 「意味を教えてください」 じゃなくて 「この部分は~なので・・・だと思ったのですが、実際はどうなんでしょうか」 という質問の仕方の方が望ましいことを覚えておいてください。そのほうが求められている回答が分かりやすくなります。本題に入りますが、今回あなたが分からずに悩んでいることを推測すると ・ifブロックの括弧が開いたままPHP部分がいったん閉じられて突然HTMLタグが入り込んできているが、これでもちゃんと動くのか? ・このmetaタグはどういった動作をさせるものなのか? という2つの疑問があると思いました。まず前者に関してですが、マニュアルの以下の記事をお読みいただければ解決します。 PHP Manual - HTML からの脱出 http://www.php.net/manual/ja/language.basic-syntax.phpmode.php PHP Manual - 制御構造に関する別の構文 http://www.php.net/manual/ja/control-structures.alternative-syntax.php マニュアル中では別の構文の方を用いて解説されています。こっちの方が見やすいと感じる人が多いからです。質問者さんが提示されたコードを別の構文の方に書き換えると <?php if (!is_array($data)): ?> <meta http-equiv="refresh" content="0;URL=./error.html" /> <?php endif; ?> となりますね。どっちが見やすいと思いますか?まぁこれは個人差があるので好きな方を選択してください。後者の疑問に入りますが、これはちょっとググればすぐ分かることです。 Google検索 - 「meta refresh」 https://www.google.co.jp/search?q=meta+refresh まとめると、「$dataが配列じゃなければエラーページに飛ばすためのmetaタグを出力する」ということになります。しかし…どんな参考書をお使いなのかは知りませんが、普通はこんなコード書きません。エラーページに飛ばしたい場合はheader関数を使って <?php if (!is_array($data)) { header('Location: http://example.com/error.html'); exit; } のようにする方が一般的です。こちらの方法であればジャンプさせるページがブラウザの履歴にも残らないという大きなメリットがあります。ただし、1文字も出力していない状態でしかこの関数は使えないことを覚えておいてください。マニュアルにも大きく注意書きがありますね。 PHP Manual - header http://www.php.net/manual/ja/function.header.php