以下のコードでお聞きしたい箇所がございます。
php
1<?php 2$ext = pathinfo($_FILES['upfile']['name']); 3$perm = ['gif', 'jpg', 'jpeg', 'png']; 4 5if ($_FILES['upfile']['error'] !== UPLOAD_ERR_OK) { 6 $msg = [ 7 UPLOAD_ERR_INI_SIZE => 'php.iniのupload_max_filesize制限を越えています。', 8 UPLOAD_ERR_FORM_SIZE => 'HTMLのMAX_FILE_SIZE 制限を越えています。', 9 UPLOAD_ERR_PARTIAL => 'ファイルが一部しかアップロードされていません。', 10 UPLOAD_ERR_NO_FILE => 'ファイルはアップロードされませんでした。', 11 UPLOAD_ERR_NO_TMP_DIR => '一時保存フォルダが存在しません。', 12 UPLOAD_ERR_CANT_WRITE => 'ディスクへの書き込みに失敗しました。', 13 UPLOAD_ERR_EXTENSION => '拡張モジュールによってアップロードが中断されました。' 14 ]; 15 $err_msg = $msg[$_FILES['upfile']['error']]; 16} elseif (!in_array(strtolower($ext['extension']), $perm)) { 17 $err_msg = '画像以外のファイルはアップロードできません。'; 18} elseif (!@getimagesize($_FILES['upfile']['tmp_name'])) { 19 $err_msg = 'ファイルの内容が画像ではありません。'; 20} else { 21 $src = $_FILES['upfile']['tmp_name']; 22 $dest = mb_convert_encoding($_FILES['upfile']['name'], 'SJIS-WIN', 'UTF-8'); 23 if (!move_uploaded_file($src, 'doc/'.$dest)) { 24 $err_msg = 'アップロード処理に失敗しました。'; 25 } 26} 27if (isset($err_msg)) { 28 die('<div style="color:Red;">'.$err_msg.'</div>'); 29} 30header('Location: http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/file1.php');
上記のコードは、ファイルアップロードの処理の部分になるのですが、「$err_msg = $msg[$_FILES['upfile']['error']];」ここの部分で、 $msgには、「$_FILES['upfile']['error']]」がキーとして、入っているのですが、前の処理では、$msgには代入されていません。上記コードはPHPを学習している際に、出てきたコードなのですが、「$err_msg = $msg[$_FILES['upfile']」このような記述が可能な理由が分かりません。
どなたかご助言いただければ幸いです。よろしくお願いします
回答1件
あなたの回答
tips
プレビュー