Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: PHP - запись в массив и сортировка  (Прочитано 2839 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн intervision

  • Автор темы
  • Активист
  • *
  • Сообщений: 312
  • Только тяжелая музыка
    • Просмотр профиля
    • Сумеречное Радио
PHP - запись в массив и сортировка
« : 30 Января 2011, 03:52:35 »
есть скрипт который выводит список папок в дирректории

<?php
function recurs_dir($path)
{ static 
$depth 0$dir opendir($path); while(($file readdir($dir)) !== FALSE) { if($file == "." || $file == "..") continue; echo str_repeat("-"$depth)." ".$file."<br>";  } closedir($dir);
}
recurs_dir("/media/Music");
?>

как записать вывод в массив и осортировать по названиям?

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: PHP - запись в массив и сортировка
« Ответ #1 : 30 Января 2011, 03:54:29 »
$массивАдресов[] = $адрес

А потом
http://www.softtime.ru/bookphp/gl4_4.php

Оффлайн intervision

  • Автор темы
  • Активист
  • *
  • Сообщений: 312
  • Только тяжелая музыка
    • Просмотр профиля
    • Сумеречное Радио
Re: PHP - запись в массив и сортировка
« Ответ #2 : 30 Января 2011, 04:00:11 »
я  в программировании вообще по нулям просто наш штатный программист щас спит - а сделать оч надо...

не могли бы вы подробнее немного описать что куда и как загонять. с сортировкой более менее понятно...

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: PHP - запись в массив и сортировка
« Ответ #3 : 30 Января 2011, 04:12:43 »
Даже не знаю, я так не пишу обычно. Мне не нравится, когда функция что-то вываливает на экран, да ещё и ничего не возвращая при этом.
Ну можно вот так попробовать:

Ставим переносы строк хотя бы после каждого ";", а то нифига не понятно.

Видим такую строчку:
echo str_repeat("-", $depth)." ".$file."<br>";

Над ней нужно поставить строку
$fileListOrAnyOtherName[] = str_repeat("-", $depth)." ".$file;
тогда получим массив с выхлопом.
Но он будет существовать только внутри функции, чтобы видеть его из всей программы, нужно сделать его глобальным
function recurs_dir($path)
{
global $fileListOrAnyOtherName;
static $depth = 0; $dir = opendir($path);

Но я тоже не специалист :)

Оффлайн intervision

  • Автор темы
  • Активист
  • *
  • Сообщений: 312
  • Только тяжелая музыка
    • Просмотр профиля
    • Сумеречное Радио
Re: PHP - запись в массив и сортировка
« Ответ #4 : 30 Января 2011, 04:18:38 »
просто суть в том, что есть хард с музыкой и чтобы в ручную на сайте не обновлять список исполнителей решил автоматом сделать - закинули на хард папку - добавилась в список... вот такая вот цель

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: PHP - запись в массив и сортировка
« Ответ #5 : 30 Января 2011, 04:25:51 »
А функция из первого поста этого не делает?

Оффлайн intervision

  • Автор темы
  • Активист
  • *
  • Сообщений: 312
  • Только тяжелая музыка
    • Просмотр профиля
    • Сумеречное Радио
Re: PHP - запись в массив и сортировка
« Ответ #6 : 30 Января 2011, 04:27:23 »
делает но не в алфавитном порядке собссно к чему вопрос и был... единственное что нагуглил про сортировку - то что надо записать данные в массив а потом с ними работать то есть сортировать можно... а как это сделать я хз =( вот и спросил.. если есть другие варианты отображать список папок в алфавитном порядке буду тока рад =)

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: PHP - запись в массив и сортировка
« Ответ #7 : 30 Января 2011, 04:41:34 »
А.
Тогда вот это:
echo str_repeat("-", $depth)." ".$file."<br>";меняем на
$fileListOrAnyOtherName[] = str_repeat("-", $depth)." ".$file;
$fileListSorted = natsort($fileListOrAnyOtherName);
foreach {$fileListSorted as $var1) {
  echo "$var1<br>";
}

Код не идеален, но не исключено, что будет работать :)

Оффлайн intervision

  • Автор темы
  • Активист
  • *
  • Сообщений: 312
  • Только тяжелая музыка
    • Просмотр профиля
    • Сумеречное Радио
Re: PHP - запись в массив и сортировка
« Ответ #8 : 30 Января 2011, 04:55:48 »
Подозреваю, что так  -

$fileListOrAnyOtherName[] = str_repeat("-", $depth)." ".$file;
$fileListSorted = natsort($fileListOrAnyOtherName);
foreach ($fileListSorted as $var1) {
  echo $var1."<br>";
}


но тоже не работает

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: PHP - запись в массив и сортировка
« Ответ #9 : 30 Января 2011, 05:02:46 »
каким образом  не работает?

Оффлайн intervision

  • Автор темы
  • Активист
  • *
  • Сообщений: 312
  • Только тяжелая музыка
    • Просмотр профиля
    • Сумеречное Радио
Re: PHP - запись в массив и сортировка
« Ответ #10 : 30 Января 2011, 05:03:27 »
Warning: Invalid argument supplied for foreach() in /var/www/sub/system/musiclib.php on line 15

и так много много раз подряд

а если так

$fileListOrAnyOtherName[] = str_repeat("-", $depth)." ".$file;
$fileListSorted[] = sort($fileListOrAnyOtherName);


foreach ($fileListSorted as $var)

{
  echo $var."<br>";
}

выдается столбец единиц
« Последнее редактирование: 30 Января 2011, 05:12:16 от intervision »

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: PHP - запись в массив и сортировка
« Ответ #11 : 30 Января 2011, 05:35:23 »
А, ну да :)

Вместо echo str_repeat("-", $depth)." ".$file."<br>"; пишем $fileListOrAnyOtherName[] = str_repeat("-", $depth)." ".$file;

А потом уже после
closedir($dir);
добавляем
$fileListSorted = sort($fileListOrAnyOtherName);
foreach ($fileListSorted as $var)
{
  echo $var."<br>";
}

Оффлайн intervision

  • Автор темы
  • Активист
  • *
  • Сообщений: 312
  • Только тяжелая музыка
    • Просмотр профиля
    • Сумеречное Радио
Re: PHP - запись в массив и сортировка
« Ответ #12 : 30 Января 2011, 05:42:50 »
тогда просто единичка выдается... одна....


было много а теперь одна... )))

Оффлайн Дмитрий Бо

  • Погонщик серверов
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3549
  • Я не техподдержка, я за порядком слежу
    • Просмотр профиля
Re: PHP - запись в массив и сортировка
« Ответ #13 : 30 Января 2011, 05:56:52 »
Отладочный вариант:
<?php
function recurs_dir($path)
{
static 
$depth 0;
$dir opendir($path);
while((
$file readdir($dir)) !== FALSE) {
  if(
$file == "." || $file == "..") continue;
  
$fileListOrAnyOtherName[] = str_repeat("-"$depth)." ".$file;
  echo 
str_repeat("-"$depth)." ".$file."<br>";
  }
closedir($dir);
echo  
"<hr>";
print_r($fileListOrAnyOtherName);
echo  
"<hr>";
$fileListSorted sort($fileListOrAnyOtherName);
print_r($fileListSorted);
echo  
"<hr>";
foreach (
$fileListSorted as $var)
{
  echo 
$var."<br>";
}
}
recurs_dir("/media/Music");

?>



Оффлайн intervision

  • Автор темы
  • Активист
  • *
  • Сообщений: 312
  • Только тяжелая музыка
    • Просмотр профиля
    • Сумеречное Радио
Re: PHP - запись в массив и сортировка
« Ответ #14 : 30 Января 2011, 06:02:31 »
(Нажмите, чтобы показать/скрыть)

непонятно почему там все таки единичка ((( индексы присваивает правильно а после сортировки странности

Пользователь решил продолжить мысль 30 Января 2011, 06:14:02:
ВСЕ!!!

достиг просветления и сделал )))

вот - может кому пригодиццо

<?php

function recurs_dir($path)
{
static 
$depth 0$dir opendir($path);
while((
$file readdir($dir)) !== FALSE) { if($file == "." || $file == "..") continue;
#echo str_repeat("", $depth)." ".$file."<br>";
$massiv[] = str_repeat("-"$depth)." ".$file;
}
closedir($dir);
sort($massiv);
# print_r ($massiv); // отладко

foreach ($massiv as $band)

{
echo 
$band."<br>";
}

}

recurs_dir("/media/Music");

?>
« Последнее редактирование: 30 Января 2011, 06:14:02 от intervision »

 

Страница сгенерирована за 0.025 секунд. Запросов: 21.