Как сделать сортировку по цене?

P
На сайте с 06.01.2009
Offline
601
775

Ребят, привет.

Есть файлы моделей, которые лежат в одной папке.

Скрипт в настоящий момент может записать в массив все файлы, отсортировать их по наименованию.

В файле в определенной строке есть набор цифр (это цена товара).

Как сделать сортировку файлов по цене?

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

Спасибо заранее.

gormarket
На сайте с 29.12.2010
Offline
47
#1

Создаете новый массив с ценой

$arrPrice=Array();

Перебираете массив с именами файлов

foreach ($aName as $key=>$value){

выдергиваете из файла цену и записываете ее в массив цен в элемент с тем же ключем

$arrPrice[$key]=цена

затем сортируете массив $arrPrice командой

asort($arrPrice);

Все, результат достигнут.

можете сделать массив ключей

$arrKeysPr=array_keys($arrPrice);

$aName[$arrKeysPr[0]] будет указывать на файл с минимальной ценой,

$aName[$arrKeysPr[sizeof($arrKeysPr)-1]] на файл с максимальной ценой.

Товары и цены в магазинах Вашего города: Городской рынок (http://gormarket.ru/)
P
На сайте с 06.01.2009
Offline
601
#2

gormarket, спасибо большое. Будем пробовать.

postavkin добавил 14.09.2011 в 23:23

gormarket:

$aName[$arrKeysPr[0]] будет указывать на файл с минимальной ценой,

Извините, но вот эти строки выдают ошибку.

Я написал

echo "<br>$aName[$arrKeysPr[0]]"; 

ошибка

Parse error: syntax error, unexpected '[', expecting ']' in /home/host760740/site.ru/htdocs/www/test/test32-cena-sortirovka.php on line 65

postavkin добавил 14.09.2011 в 23:32

Вот полностью мой код, на основании Вашего.

В массиве $files - записаны имена файлов.


$arrPrice=Array();
foreach ($files as $key=>$value) {
$ppp = $value;
$file='files/'.$ppp.'';
$title = 0;
//берем файл и сканируем его
$fd = fopen("$file", "r");
while ($buffer = fgets($fd, 2428)) { $src.=$buffer; }
preg_match('~<cena>(.*?)</cena>~is', $src, $match);
$title = $match[1];
$src = 0;
fclose($fd);
$arrPrice[$key]=$title;
echo "<br>$file= цена $title";
}

asort($arrPrice);
$arrKeysPr=array_keys($arrPrice);

echo "<br>$files[$arrKeysPr[1]]";

postavkin добавил 14.09.2011 в 23:40

Уважаемый, gormarket.

Я сделал так, теперь все работает, посмотрите, пожалуйста, правильно ли всё? Спасибо заранее.


$arrPrice=Array();

foreach ($files as $key=>$value) {
$ppp = $value;
$file='files/'.$ppp.'';
$title = 0;
//берем файл и сканируем его
$fd = fopen("$file", "r");
while ($buffer = fgets($fd, 2428)) { $src.=$buffer; }
preg_match('~<cena>(.*?)</cena>~is', $src, $match);
$title = $match[1];
$src = 0;
fclose($fd);
$arrPrice[$key]=$title;
echo "<br>$file= цена $title";
}

asort($arrPrice);
$arrKeysPr=array_keys($arrPrice);

foreach ($arrKeysPr as $value) {
$sss = $value;
$z = $files[$sss];
echo "<br>$z";
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий