【发布时间】:2014-11-05 20:08:17
【问题描述】:
请放轻松,这是我第一次,显然我不知道自己在做什么......
我正在使用我在网上找到的以下脚本来上传文件并将上传信息写入数据库,我想将 $file_name 信息收集到另一个数组中,以便在 implode 函数中在此代码块之外使用。我已经搜索了高低,但在我的搜索中没有成功。我想出了如何从 if 语句内部而不是在它和 php 块之外打印 $file_name(s),但我不知道如何将它变成一个数组。
任何帮助将不胜感激。
<?php
if(isset($_FILES['files'])){
$errors= array();
foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
$file_name = $key.$_FILES['files']['name'][$key];
$file_size =$_FILES['files']['size'][$key];
$file_tmp =$_FILES['files']['tmp_name'][$key];
$file_type=$_FILES['files']['type'][$key];
$timestamp= date('Y-m-d G:i:s');
if($file_size > 2097152){
$errors[]='File size must be less than 2 MB';
}
$query="INSERT into upload_data (FILE_NAME, FILE_SIZE, FILE_TYPE, timestamp) VALUES(:file_name,:file_size,:file_type, :timestamp)";
$desired_dir="files";
if(empty($errors)==true){
if(is_dir($desired_dir)==false){
mkdir("$desired_dir", 0700); // Create directory if it does not exist
}
if(is_dir("$desired_dir/".$file_name)==false){
move_uploaded_file($file_tmp,"files/".$file_name);
}else{ //rename the file if another one exist
$new_dir="files/".$file_name.time();
rename($file_tmp,$new_dir) ;
}
$q = $dbo->prepare($query);
$q->execute(array(':file_name'=>$file_name,':file_size'=>$file_size,':file_type'=>$file_type, ':timestamp'=>$timestamp));
}else{
print_r($errors);
}
}
if(empty($error)){
echo "Success";
}
}
?>
【问题讨论】:
-
如果我理解正确,请尝试在 foreach 循环之前创建一个空数组,您可以在循环内填充该数组,然后稍后从中读取
-
您只想将这些文件名放在数组之外。我说的对吗?
-
Tushar - 是的,没错,我有第二个 PHP 块,我想使用其中的数据。