0

Notice: 未定義のオフセット: 6 行目の 3

6行目は次のとおりです。

$tmpFilePath = $_FILES['file']['tmp_name'][$i];

必要なものは次のとおりです。

session_start();
//Loop through each file
for($i=0; $i<count($_FILES['file']); $i++) {
  //Get the temp file path
  $tmpFilePath = $_FILES['file']['tmp_name'][$i];

  //Make sure we have a filepath
  if ($tmpFilePath != ""){
    //Setup our new file path
    $newFilePath = "./uploaded_files/" . $_FILES['file']['name'][$i];

    //Upload the file into the temp dir
    if(move_uploaded_file($tmpFilePath, $newFilePath)) {

    echo "Upload Successful!<br />";

}
}
}
4

2 に答える 2

2

存在するかどうかを確認します。

if (isset($_FILES['file']['tmp_name'][$i]))
{
    $tmpFilePath = $_FILES['file']['tmp_name'][$i];
}
于 2012-12-12T07:35:21.633 に答える
0

一見すると、for() ループ内のコードは次のようになります。

for($i=0; $i<count($_FILES['file']['tmp_name']); $i++)

カウントされたアイテムは、カウントされた$_FILES['file']アイテムとは異なるカウントになる可能性があるため$_FILES['file']['tmp_name']

のアイテム数がカウントされたアイテム数$_FILES['file']よりも多い場合$_FILES['file']['tmp_name']、コードは未定義のオフセットの通知でエラーをトリガーします。

のアイテム数がカウントされたアイテム数$_FILES['file']よりも少ない場合、コードは、配列 $_FILES['file']['tmp_name']内でより高い最初の数を超えるすべてのデータを認識しません。['tmp_name']

式でカウントしている配列/サブ配列に最も近い for ループのインクリメント変数/演算子を保持することをお勧めします。

これを簡単に覚えるための重要なトリックは、for ループが、変数に配置する配列のインデックス付け/関連付けられた場所とほぼ同じに見えることに注意することです。

for($i=0; $i<count($_FILES['file']['tmp_name']); $i++)  
$tmpFilePath   =   $_FILES['file']['tmp_name'][$i];  

見えますか?

于 2013-01-20T05:49:29.577 に答える