拆分数组

时间:2011-07-10 17:23:25

标签: php arrays

我正在尝试从数组中拆分图像名称。

$this->_filenames[]= array($name);
$files = explode(",", $name);

当我在var_dump上执行$files时,它会返回存储在数组中的两个图像,如下所示:

array
    0 => string 'felton300.jpg' (length=13)
1
array
    0 => string 'felton400.jpg' (length=13)
1 

如果我尝试使用list()在数组中存储每个元素(使用下面的代码),我会收到错误。

list($img1,$img2) = $files;

错误是:Undefined offset: 1

我正在从表单上传图像,并希望使用变量(即$ img1)作为插入到mysql数据库的引用。这是我上传图片的代码。

public function move($overwrite = false) {
$field = current($this->_uploaded);
if(is_array($field['name'])){
foreach($field['name'] as $number => $filename){

//处理多重上传

$this->_renamed = false;
$this->processFile($filename,$field['error'][$number],
$field['size'][$number],
$field['type'][$number],$field['tmp_name'][$number],
$overwrite); 
}
} else  {
$this->processFile($field['name'],$field['error'],
$field['size'],$field['type'],$field['tmp_name'],$overwrite);
}
}

protected function processFile($filename,$error,$size, $type,$tmp_name,$overwrite){
$OK = $this->checkError($filename,$error);
if ($OK) {
$sizeOK = $this->checkSize($filename, $size);
$typeOK = $this->checkType($filename, $type);
if ($sizeOK && $typeOK) {
$name = $this->checkName($filename, $overwrite);

$success = move_uploaded_file($tmp_name, $this->_destination . $name); 
if ($success) {

//将修改后的文件名添加到文件名数组

$this->_filenames[]= array($name);

//拆分数组* ** 这就是我想要拆分阵列的地方所以我可以在MYSQL表中存储图像。表将有3列ID,image1,image2 * ** * **

$files = explode(",", $name);
var_dump($files);

1 个答案:

答案 0 :(得分:0)

如果阵列中有两个图像,为什么不

INSERT INTO table (id, image1, image2) VALUES ({$id}, '{$files[0]}', '{$files[1]}')

为什么要分手呢?

从这个看起来

array
    0 => string 'felton300.jpg' (length=13)
1
array
    0 => string 'felton400.jpg' (length=13)
1 

这里有一个多维数组(注意每个都有一个0的键)。很难说你提供了什么,但

INSERT INTO table (id, image1, image2) VALUES ({$id}, '{$files[0][0]}', '{$files[0][1]}')

也可能是您的解决方案。