電子書籍の厳選無料作品が豊富!

プログラム初心者です

if文のなかでmove_uploaded_file()を使うとどうゆう処理をするんでしょうか?


if (!move_uploaded_file($tmp_name, "{$image_dir}/{$name}")) {
throw new Exception('noimg');//画像の保存に失敗しました
}


否定がついていても最初の一行でアップロードしてくれるのですか?

否定がついていてもif文の中の関数は実行されるのでしょうか?


よろしくお願いします

A 回答 (2件)

move_uploaded_file($tmp_name, "{$image_dir}/{$name}")


これがファイルアップロード
成功したらTRUE、失敗したらFALSEが返ります。
よって、

if (move_uploaded_file($tmp_name, "{$image_dir}/{$name}"))
は成功した時、

if (!move_uploaded_file($tmp_name, "{$image_dir}/{$name}"))
は失敗した時となります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます
なるほど、返ってきた値で判定しているんですね。
!が着くと実行しないのではないかと混乱していました
すっきりしました。ありがとうございます

お礼日時:2013/12/30 17:17

厳密にはPHPスクリプトの実行が開始した時点で、($_FILES['name属性名']['error']がUPLOAD_ERR_OKである限り)テンポラリディレクトリにアップロードは終了しています。

rename関数を使ってテンポラリファイルを目的のディレクトリに移動することが出来ますが、is_uploaded_file関数によるチェックも同時に行うのがmove_uploaded_file関数です。

if (!is_uploaded_file($tmp_name) || !rename($tmp_name, $new_name)) { ... }

if (!move_uploaded_file($tmp_name)) { ... }

これらは全く同じ意味です。実際のファイル移動処理に関しては、既に回答がある通り

move_uploaded_file($tmp_name)

の時点で移動は実行され、それに「!」をつけて返り値を反転させているだけです。

こちらも参考にどうぞ。
http://qiita.com/mpyw/items/939964377766a54d4682
http://qiita.com/mpyw/items/73ee77a9535cc65eff1e
    • good
    • 0
この回答へのお礼

回答ありがとうございます
返り値での判定だったんですね
理解できました。ありがとうございます

お礼日時:2013/12/30 17:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!