人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPの質問です。2つ質問させてください。

1)
$tags = (is_array($_GET['tag'])) ? $_GET['tag'] : array($_GET['tag']);

これが何をしているのかわかりません。途中で?がありますが、これは何なのでしょう。

2)
if (null == $date) {

色々

}

こちらもわかりません。


どちらか一つだけで構いません。どなたかよろしくお願いします。
**上記スクリプトはいずれもZendFramework内の表現です。

●質問者: tokyosmash
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP tag スクリプト 表現
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● imo758
●35ポイント

A ? B : C

A ならば B を、A でなければ C を返します。

1)

$tags = (is_array($_GET['tag'])) ? $_GET['tag'] : array($_GET['tag']);

$_GET['tag']の指し示す先が配列であれば$_GET['tag']の指し示す配列を

$_GET['tag']の指し示す先が配列でなければ$_GET['tag']そのものを

$tagsに代入しなさい


nullとは空っぽという意味です。

2)

if (null == $date) {

色々

}

$dateが空っぽなら色々しなさい

◎質問者からの返答

ありがとうございます。見たことの無い形だったので助かります。


2 ● KirakiraHikaru
●35ポイント ベストアンサー

1)

?を使った文法は三項演算子です。

http://jp.php.net/manual/ja/language.operators.comparison.php#la...

(expr1) ? (expr2) : (expr3) という式は、式1 が TRUE の場合に 式2 を、 式1 が FALSE の場合に 式3 を値とします。

ですので、

tagが配列であれば、そのまま取得しtags変数に入れて、

tagが配列でなければ、tagを配列にして(要素は一つ)tags変数に入れる。

という処理です。

要するに、URIで渡された値が複数であっても単数であっても配列として取得したいから、このような処理にしているのだと思います。


2)

こちらは、そのままですが、date変数が空なら色々するという処理です。

ちょっと検索してみて見つかったものですが、下記のリスト6で同じことをしています。

詳しくはわかりませんが、投稿日の有無によって、ある場合はその投稿日に対応したページの表示、ない場合はページ一覧を表示するという処理の切り分けで使用しているのではないでしょうか?

http://www-06.ibm.com/jp/developerworks/special/dlife/library/it...

◎質問者からの返答

ずばりそのページでZendFrameworkを勉強していたんです。なかなかドキュメントが少なくて困ってます。


ところでなぜ

if ($date == null)

ではないのでしょうか。こちらの方がピンときますよね。あえて逆に書いてあるので何か特別な意味があるのかな?と思って質問させてもらいました。


みなさん回答ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ