[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод данных из функции
korelli
Здравствуйте! Моя проблема заключается в том, что у меня не получается вывести данные из функции. Нужно вывести три переменные: $title,$file,$ext
Вот код:

function gallery($directory)
{
$allowed_types=array('jpg','jpeg','gif','png');
$file_parts=array();
$ext='';
$title='';
$i=0;

$dir_handle = @opendir($directory) or die("Ошибка открытия дирректории!");

while ($file = readdir($dir_handle))
{
if($file=='.' || $file == '..') continue;

$file_parts = explode('.',$file);
$ext = strtolower(array_pop($file_parts));

$title = implode('.',$file_parts);
$title = htmlspecialchars($title);

return array($file, $title, $ext);
}

closedir($dir_handle);

}

$directory = 'galery';
$result = gallery($directory);

foreach($result as $res);
{
echo $res;
}

Понимаю, что не правильно но не могу найти решения.



Спустя 8 минут, 21 секунда (27.06.2012 - 14:47) pak написал(а):
я так понял нужно вынести в массив титл картинок, имя с расширением, и просто расширение???

Спустя 3 минуты, 3 секунды (27.06.2012 - 14:50) korelli написал(а):
Совершенно верно. Кроме как массивом выводить эти данные я не придумал как.

Спустя 15 минут, 17 секунд (27.06.2012 - 15:05) fdr написал(а):
$title = htmlspecialchars($title);
return array($file, $title, $ext);

return array($file, $title, $ext); должен быть в самом конце

Спустя 2 минуты, 53 секунды (27.06.2012 - 15:08) korelli написал(а):
Это ситуацию не спасает.

Спустя 6 минут, 45 секунд (27.06.2012 - 15:15) pak написал(а):
Мне на ум пришло это:

$dir = './galery';
if(file_exists($dir))
{
$m = scandir($dir);
for($i=2; $i <= count($m); $i++)
{
$md = explode('.',$m[$i]);
$arr[] = array('title' => $md[0],
'file' => $m[$i],
'exp' => $md[1]
);

}
}

echo '<pre>';
print_r($arr);
echo '</pre>';

Спустя 3 минуты, 36 секунд (27.06.2012 - 15:18) fdr написал(а):
на мой взгляд ошибок много...
$file_parts = explode('.',$file);
- $file здесь может быть и директория.
Ок, разделили что бы узнать расширение.
$title = implode('.',$file_parts); - снова его собираете, но здесь по идее должно оставаться одна переменная
$title = htmlspecialchars($title); - и зачем в имени файла преобразование
return array($file, $title, $ext); - после ретурна, функция завершает работу.
вопрос, для чего вам это функ. что вы хотите что бы она вам возвращаля?))

Спустя 9 минут, 17 секунд (27.06.2012 - 15:28) korelli написал(а):
Функцию я использую для вывода галереи.
Функция свое дело делает нормально если продолжать работу с нужными мне переменными внутри ее. Мне нужно просто вытащить их наружу для дальнейшей работы.

Спустя 2 минуты, 1 секунда (27.06.2012 - 15:30) korelli написал(а):
Вот как все работает:

$directory = 'galery';

$allowed_types=array('jpg','jpeg','gif','png');
$file_parts=array();
$ext='';
$title='';
$i=0;

$dir_handle = @opendir($directory) or die("Ошибка открытия дирректории!");

while ($file = readdir($dir_handle))
{
if($file=='.' || $file == '..') continue;

$file_parts = explode('.',$file);
$ext = strtolower(array_pop($file_parts));

$title = implode('.',$file_parts);
$title = htmlspecialchars($title);

$nomargin='';

if(in_array($ext,$allowed_types))
{
if(($i+1)%4==0) echo '</br>';

echo = '<li><a href="galery.php?al='.$title.'"><img src="galery/'.$file.'" title="" alt=""/></a></li>';

$i++;
}
}


closedir($dir_handle);

Но так как этот кусок кода у меня встречается несколько раз я хочу преобразовать его в функцию.

Спустя 12 минут, 43 секунды (27.06.2012 - 15:42) fdr написал(а):
$dir_handle = @opendir('.') or die("Ошибка открытия дирректории!");
$arr = array();
while ($file = readdir($dir_handle)) {
if($file=='.' || $file == '..') continue;
$arr[] = pathinfo($file);
}

closedir($dir_handle);
return $arr[];

можно так

Спустя 17 минут, 36 секунд (27.06.2012 - 16:00) pak написал(а):
Я тебя понял так и попробовал:

function scanGalery($dir = '.', $ext = array())
{
if(file_exists($dir))
{
$m = scandir($dir);
for($i=2; $i <= count($m); $i++)
{
$path = pathinfo($dir.'/'.$m[$i]);
if(in_array($path['extension'], $ext))
{
$arr[] = array('title' => $path['filename'],
'file' => $m[$i],
'ext' => $path['extension']
);

}

}

return $arr;
}
}


//вызываем
$dir = 'photo';
$extensiom = array('jpg', 'jpeg', 'png', 'gif');

echo '<pre>';
print_r(scanGalery($dir, $extensiom));
echo '</pre>';


В итоге получаем массив токого вида:

Array
(
[0] => Array
(
[title] => 1340210794f4ce
[file] => 1340210794f4ce.jpg
[ext] => jpg
)

[1] => Array
(
[title] => 1340210798p6c9
[file] => 1340210798p6c9.jpg
[ext] => jpg
)

[2] => Array
(
[title] => 13402108041b53
[file] => 13402108041b53.jpg
[ext] => jpg
)
..................................................................

Спустя 23 минуты, 42 секунды (27.06.2012 - 16:24) korelli написал(а):
Да, спасибо, это работает!
Быстрый ответ:

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