Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: отсортировать массив

Сообщения:  [1-10]   [11-16] 

 
 автор: Trianon   (02.02.2010 в 15:59)   письмо автору
 
   для: freeing   (02.02.2010 в 14:44)
 

Это не решение. Неопределенные переменные в коде.

  Ответить  
 
 автор: freeing   (02.02.2010 в 14:44)   письмо автору
 
   для: Trianon   (02.02.2010 в 12:15)
 

Решение!


<?php
    $string 
= array
    (
        
"1",
        
"1.1",
        
"1.2",
        
"1.3",
        
"1.3.1",
        
"1.3.2",
        
"1.3.2.1",
        
"1.3.2.2",
        
"1.3.3",
        
"1.3.4",
        
"1.3.4.1",
        
"1.3.4.2",
        
"1.3.4.3",
        
"1.3.4.4",
        
"1.3.5",
        
"1.3.6",
        
"1.4",
        
"1.5",
        
"2",
        
"2.1",
        
"2.2",
        
"2.3",
        
"2.3.1",
        
"2.3.2",
        
"2.3.2.1",
        
"2.3.2.2",
        
"2.3.3",
        
"2.3.4",
        
"2.3.4.1",
        
"2.3.4.2",
        
"2.3.4.3",
        
"2.3.4.4",
        
"2.3.5",
        
"2.3.6",
        
"2.4",
        
"2.5",
    );


    foreach (
$string as $key => $val)
    {
        
$p = &$array;
    
        
$i 0;
    
        while(
$i strpos($val.'.','.',$i 1))
        {
            if (!
is_array($p))
            {
                
$p = array();
            }
    
            
$p = &$p[substr($val0$i)];
        }
    
        if (!
is_array($p))
        {
            
$p $val;
        }
    }

    
$p = &$array;

    print 
"<pre>";
    
print_r($p);
?>

  Ответить  
 
 автор: Trianon   (02.02.2010 в 12:15)   письмо автору
 
   для: freeing   (01.02.2010 в 17:39)
 

функции обратного вызова я применять не предлагал.
Про "усложняет работу программы" уместно говорить, сравнивая уже работающие (или хотя бы работоспособные) варианты. У Вас есть с чем сравнивать?
Или Вы про "усложняет работу программиста"?

  Ответить  
 
 автор: freeing   (02.02.2010 в 10:20)   письмо автору
 
   для: Саня   (01.02.2010 в 17:13)
 

так что за списки?

  Ответить  
 
 автор: freeing   (01.02.2010 в 17:39)   письмо автору
 
   для: Trianon   (01.02.2010 в 10:18)
 

не хотел бы использовать рекурсию и функции обратного вызова, это усложняет работу программы, я итак с трудом пошел на перебор массивов

  Ответить  
 
 автор: freeing   (01.02.2010 в 17:37)   письмо автору
 
   для: Саня   (01.02.2010 в 17:13)
 

ну вот пример:

есть страница новости
имя страницы /news
файл с описанием 2.8.txt

есть станица новость 1
имя страницы /news/new1
файл с описанием 2.8.1.txt

то есть данный разбор $id необходим чтобы сделать правильный request:

http://test.com/news/
http://test.com/news/new1/
http://test.com/news/new2/

которые в свою очеред читают файлы:

2.8.txt
2.8.1.txt
2.8.2.txt

может я делаю что-то не так, приведи пример со списками если не сложно...

  Ответить  
 
 автор: Саня   (01.02.2010 в 17:13)   письмо автору
 
   для: freeing   (01.02.2010 в 17:02)
 

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

  Ответить  
 
 автор: freeing   (01.02.2010 в 17:02)   письмо автору
 
   для: Саня   (01.02.2010 в 09:37)
 

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

есть массив вида:
$id он приведен выше
$nаme содержащий в себе имена страниц
$filе файл для дальнейшей загрузки содержимого страницы

$id который я обрабатываю указывает какая страница к какой относится
то есть, раздел, под раздел

$nаmе указывает какое имя использовать для request, проще говоря это псевдонимы для $id

$file указывает с какого файла с читать данные

и все это с рядом проверок на наличие записи, файлов....

так что уникальные имена вида 1.1, 1.1.1...
это наилучший вариант для распределение разделов и под разделов

  Ответить  
 
 автор: Trianon   (01.02.2010 в 10:18)   письмо автору
 
   для: freeing   (01.02.2010 в 02:28)
 

Очень редкий пример задачи, которую, хотя она формально и не требует рекурсии, я всё же стал бы решать рекурсивным спуском.

  Ответить  
 
 автор: Саня   (01.02.2010 в 09:37)   письмо автору
 
   для: freeing   (01.02.2010 в 02:28)
 

В большинстве случаев многомерный массив не нужен. Вы можете обосновать необходимость такого массива?

  Ответить  

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования