Проблем със сортиране на масив. sort()

  • Автор Автор Noxy
  • Начална дата Начална дата

Noxy

Registered
Здравейте приятели.

Код:
<?php

class Gallery
{
    public function Gallery($dir=null)
    {
        
        $files = array();
        $directory = opendir("../".$dir);
        while($item = readdir($directory))
        {
        // We filter the elements that we don't want to appear ".", ".." and ".svn"
            if(($item != ".") && ($item != "..") && ($item != ".svn") )
            {
                $files[] = $item;

            }

        }
        sort($files, SORT_NATURAL | SORT_FLAG_CASE);
        foreach($files as $filename) 
        {

    ?>
                <a href="<?php echo $dir."/".$filename; ?>" class="highslide" onclick="return hs.expand(this)">
                <img src="<?php echo $dir."-thumb/".$filename; ?>" alt="Сглобяеми къщи Бонис Комерс" title="Click to enlarge" />
                </a>
                <div class="highslide-caption">
                        Сглобяеми къщи Бонис Комерс
                </div>
    <?php
        }
    }

}
?>


Този готин код чете изображенията(всички файлове) от дадена папка и ги показва сортирани по името на файла. т.е.:

array (size=20)
0 => string 'Sglobqemi_ka6ti_stulbi6ta1.jpg' (length=30)
1 => string 'Sglobqemi_ka6ti_stulbi6ta2.jpg' (length=30)
2 => string 'Sglobqemi_ka6ti_stulbi6ta3.jpg' (length=30)
3 => string 'Sglobqemi_ka6ti_stulbi6ta4.jpg' (length=30)
4 => string 'Sglobqemi_ka6ti_stulbi6ta5.jpg' (length=30)
5 => string 'Sglobqemi_ka6ti_stulbi6ta6.jpg' (length=30)
6 => string 'Sglobqemi_ka6ti_stulbi6ta7.jpg' (length=30)
7 => string 'Sglobqemi_ka6ti_stulbi6ta8.jpg' (length=30)
8 => string 'Sglobqemi_ka6ti_stulbi6ta9.jpg' (length=30)
9 => string 'Sglobqemi_ka6ti_stulbi6ta10.jpg' (length=31)
10 => string 'Sglobqemi_ka6ti_stulbi6ta11.jpg' (length=31)
11 => string 'Sglobqemi_ka6ti_stulbi6ta12.jpg' (length=31)
12 => string 'Sglobqemi_ka6ti_stulbi6ta13.jpg' (length=31)
13 => string 'Sglobqemi_ka6ti_stulbi6ta14.jpg' (length=31)
14 => string 'Sglobqemi_ka6ti_stulbi6ta15.jpg' (length=31)
15 => string 'Sglobqemi_ka6ti_stulbi6ta16.jpg' (length=31)
16 => string 'Sglobqemi_ka6ti_stulbi6ta17.jpg' (length=31)
17 => string 'Sglobqemi_ka6ti_stulbi6ta18.jpg' (length=31)
18 => string 'Sglobqemi_ka6ti_stulbi6ta19.jpg' (length=31)
19 => string 'Sglobqemi_ka6ti_stulbi6ta20.jpg' (length=31)

Проблема е следния. Това работи идеално на локалния ми сървар (WampServer Version 2.2 PHP5.4.3 ), но днес го качих в superhosting и ми дава
Warning: sort() expects parameter 2 to be long, string given in /home/kashtisg/public_html/admin/application/gallery.php on line 20

Освен това предупреждение файловете не са подредени изобщо, което всъщност е целта на заниатието. Благодаря!

http://xn----btbfjleillr4a7gm2f.eu/index.php#nice9
 
Ами какво чудно има ? Флаговете които изпозлваш SORT_NATURAL и SORT_FLAG_CASE са добавени в версия 5.4.0

http://php.net/manual/en/function.sort.php

Вероятно версията на пхп на суперхостинг е 5.3 или по-стара и затова получаваш тази грешка, функцията неможе да разчете втория параметър като флаг, и го третира като обикновен стринг който няма работа там и вади грешка.

Вариянтите са два :

Или да попиташ подръжката на хостинг компанията дали можеш да използваш по-новата версия на пхп 5.4 или да използваш старие алтернативи на тези флагове :

http://www.php.net/manual/bg/function.natsort.php

http://www.php.net/manual/bg/function.natcasesort.php
 

Back
Горе