Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Кол-во элементов в массиве ? Как ?
Форумы портала PHP.SU » PHP » Программирование на PHP » Кол-во элементов в массиве ? Как ?

Страниц (1): [1]
 

1. Viper - 25 Сентября, 2008 - 15:48:54 - перейти к сообщению
вопрос вот в чем.
есть форма
CODE (text):
скопировать код в буфер обмена
  1. echo '<form action="index.php" enctype="multipart/form-data" method="post">
  2. <label>Разрешенные типы файлов: gif, jpg, png, bmp</label>
  3. <input type="hidden" name="MAX_FILE_SIZE" value="'.$max_post_size.'">
  4. <input type="file" name="userfile[]" class="multi" accept="gif|jpg|png|bmp" />
  5. <input type="submit" value="Upload" />
  6. </form>';


и код для её обработки
CODE (text):
скопировать код в буфер обмена
  1. for ($i=0, $n=3; $i<$n; $i++) {
  2.         if (is_uploaded_file($_FILES['userfile']['tmp_name'][$i])) {
  3.                 $filename = $_FILES['userfile']['tmp_name'][$i];
  4.                 $ext = substr($_FILES['userfile']['name'][$i], 1 + strrpos($_FILES['userfile']['name'][$i], "."));
  5.                 if (filesize($filename) > $max_post_size) {
  6.                         echo 'Error: File size > '.ini_get('post_max_size');
  7.                 } else {
  8.                         if (move_uploaded_file($filename, $ext_path.$_FILES['userfile']['name'][$i])) {
  9.                                 echo 'File successful uploaded.';
  10.                         } else {
  11.                                 echo 'Error: moving file failed.';
  12.                         }
  13.                 }
  14.         } else {
  15.                 echo 'Error: empty file.';
  16.         }
  17. }


вот структура
Array ( [userfile] =>
Array ( [name] =>
Array ( [0] => hd6.jpg [1] => oggy.gif [2] => patt_487626293adce.jpg [3] => ) [type] =>
Array ( [0] => image/jpeg [1] => image/gif [2] => image/jpeg [3] => ) [tmp_name] =>
Array ( [0] => D:\WWW\tmp\php3BB1.tmp [1] => D:\WWW\tmp\php3BB2.tmp [2] => D:\WWW\tmp\php3BB3.tmp [3] => ) [error] =>
Array ( [0] => 0 [1] => 0 [2] => 0 [3] => 4 ) [size] =>
Array ( [0] => 1010056 [1] => 32218 [2] => 6218 [3] => 0 ) ) )

как посчитать кол-во $n ? т.е. чтобы если 1 файл указан , то = 1, если 2 то 2 и т.д.
2. Champion - 25 Сентября, 2008 - 15:52:36 - перейти к сообщению
количесиво = count(объект)
3. Viper - 25 Сентября, 2008 - 16:56:51 - перейти к сообщению
я так понял нечто вида count($_FILES['userfile']['name']['']); ?
4. valenok - 25 Сентября, 2008 - 17:28:31 - перейти к сообщению
count($_FILES['userfile']['name']['']);

объясните что тут значит каждое слово (блок)
count - ?
$_FILES - ?
['userfile'] - ?
['name'] - ?
[''] - ?
5. Viper - 25 Сентября, 2008 - 17:36:26 - перейти к сообщению
прям клуб знатоков Улыбка
1. считает кол-во элементов массива.
2. собстно сам массив с данными
3. имя формы откуда забирать
4. массив с именами файлов.
5. массив собираемый js в котором хранятся имена файлов из формы с именем userfile.

собстно с помощью
function rcount ($array) {
$count = 0;
if (is_array($array)) {
foreach($array as $id=>$sub) {
if (!is_array($sub)) {
$count++;
} else {
$count = ($count + rcount($sub));
}
}
return $count;
}
return FALSE;
}

с php.net посчитал кол-во элементов. вышло коряво но пашет.
$n = rcount($_FILES['userfile']['name'])-1;
for ($i=0; $i<$n; $i++) {
6. valenok - 25 Сентября, 2008 - 17:44:53 - перейти к сообщению
К сожалению я не имею понятия как словесно донести мысль, но попрбуйте понять сами:

count($_FILES['userfile']['name']);

 

Powered by ExBB FM 1.0 RC1