[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: next(), reset(), current()
nugle
Всем привет, если сделать, так:

$arr = reset(next($_FILES));

а следующий элемент пуст, то выдаст ошибку, как $arr не присваивать reset(next($_FILES)), если он пуст и чтобы не было ошибки...

Warning: reset() [function.reset]: Passed variable is not an array or object in



Спустя 8 минут, 35 секунд (1.04.2011 - 10:22) kirik написал(а):
Посмотри в мануале как используются и что отдают на выходе функции next и reset.

Спустя 39 минут, 48 секунд (1.04.2011 - 11:02) Trianon написал(а):
Цитата
Всем привет, если сделать, так:

$arr = reset(next($_FILES));


так может не надо так делать?

Спустя 31 минута, 27 секунд (1.04.2011 - 11:33) nugle написал(а):
Trianon, а вы можете что то другое предложить?

Спустя 9 минут, 15 секунд (1.04.2011 - 11:42) nugle написал(а):
почитал в мануале, есть функция, но ошибки на 20 строках и вывода никакого нет
В мануале написано
Цитата
Эта функция может возвращать как boolean FALSE, так и не-boolean значение, которое приводится к FALSE, например, 0 или "". За более подробной информации обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.


function cycle($meth)
{

for($i=1; $i<=20; $i++)
{


if($i==1)
{
if(reset(current($_FILES)) === true)
{
$arr2 = reset(current($_FILES));
$arr .= $arr2;
}

}

else
{
if(reset(next($_FILES)) === true)
{
$arr2 = reset(next($_FILES));
$arr .= $arr2;
}

}

}

echo $arr;
}
if ($sub)
cycle('name');


подскажите плиз

Спустя 8 минут, 29 секунд (1.04.2011 - 11:51) sergeiss написал(а):
nugle - я тебе уже в другой теме сказал, что ты занимаешься мазохизмом... Ты опиши задачу, а мы тебе подскажем более правильный алгоритм. Пока по твоим вопросам можно только догадываться, с вероятностью не более 50%, что же ты на самом деле хочешь сделать.

Я пока могу только предположить, что у тебя несколько полей ввода файлов и ты хочешь пройтись по ним и узнать, где были загружены файлы. Если это так, то ты совершенно неправильно обрабатываешь входные данные из $_FILES.

Спустя 8 минут, 33 секунды (1.04.2011 - 11:59) nugle написал(а):
sergeiss,
обрабатываю так как вы все советуете!

Да правильно, с помощью JQ создаю поля ввода картинок

$(document).ready(function(){

i = 1;

$('#uploadBut').append('<input type="file" name="uploadfile' + i + '" /><br />');

$('.plus').click(function(){

i=i+1;
if(i<=20)
$('#uploadBut').append('<input type="file" name="uploadfile' + i + '" /><br />');
else
alert('Нельзя вставлять более 20 изображений');


})


})


а с помощью класса обрабатываю!


<?php


// $_FILES['uploadfile']['name'];
// $_FILES['uploadfile']['size'];
// $_FILES['uploadfile']['type'];
// $_FILES['uploadfile']['tmp_name'];


class uploadImg
{
public function uploadTest()
{
if($this->type() == true && $this->size() == true && $this->movement() == true)
return true;

}

public function cycle($meth)
{

for($i=1; $i<=20; $i++)
{

if($meth == 'name')
{
if($i==1)
{
if($arr2 = reset(current($_FILES)))
{
$arr .= $arr2;
}
}

else
{

if($arr2 = reset(next($_FILES)))
{
$arr .= $arr2;
return $arr;
}
}
}

elseif($meth == 'size')
{
if($i==1)
return end(current($_FILES));
else
return
end(next($_FILES));
}
elseif($meth == 'tmp_name')
{
if($i==1)
{
$arr = current($_FILES);
$arr2 = next($arr);
$arr2 = next($arr);
return $arr2;
}
else
{
$arr = next($_FILES);
$arr2 = next($arr);
$arr2 = next($arr);
return $arr2;
}
}

else
return
$arr;

}
}


public function createImg()
{
$img .= '\n'.$this->cycle('name');

return $img;
}

public function createImgUrl()
{
$url .= '\n'.$this->uploaddir.'/'.$this->cycle('name');

return $url;
}


private $uploaddir = 'images';


private function type()

{
$types = array('jpg','jpeg','gif','png');
$typefile = explode('.', $this->cycle('name'));

foreach ($types as $key => $value)
{
foreach($typefile as $key2 => $value)
{
if($types[$key] == $typefile[$key2])
{
$mess = true;
break;
}

}
}


if($mess != true)
{
$mess = false;
}

return $mess;


}

private function size()
{
$size = 1024*1024*10;

if($this->cycle('size') < $size)
return true;


}

private function movement()
{
$destination = $this->uploaddir.'/'.$this->cycle('name');
if (move_uploaded_file($this->cycle('tmp_name'), $destination))
return true;


}
}



Спустя 3 часа, 46 минут, 9 секунд (1.04.2011 - 15:46) sergeiss написал(а):
Цитата (nugle @ 1.04.2011 - 12:59)
обрабатываю так как вы все советуете!

Я пока еще ничего не советовал, вроде как... Я пытаюсь пока понять, что ты хочешь сделать smile.gif

Ты мне вот что не ответил: ты хочешь просто пройти по набору полей ввода файлов и понять, где было что-то загружено, а где - не было? Верно?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.