Сортировка ассоциативного массива

AntiBuger

Новичок
Здравствуйте коллеги.

Столкнулся с проблемой сортировки ассоциативного массива.

Есть массив: parts
Code* - Код детали (тип: строка)
Manuf* - Производитель (тип: строка)
Name* - Название (тип: строка)
Price - Цена (тип: вещест.)
Storage* - Склад (тип: строка)
Delivery* - Срок доставки (тип: строка)
Count - Кол-во для покупки (тип: целое)
BaseCount - Кратность заказа (тип: целое)

Необходимо отсортировать массив по цене (делаю возможность отсортировать по убыванию или возрастанию).

Как сделать, подскажите, пожалуйтса.
 

AntiBuger

Новичок

function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}


$result = $result['Parts'];

usort($result[Price], "cmp");

foreach($result as $element) {
$prise = ceil($element[Price]);
echo "
<tr>
<td>$element
Код:
 $element[Manuf]</td>
			<td style='text-align:center;  font-size:14px'>$element[Name]</td>
			<td style='text-align:center'>$element[Delivery]</td>
			<td style='text-align:center'>$element[MaxCount]</td>
			<td style='text-align:center'><b>$prise руб</b></td>
		  </tr>
		";
		//print_r($element);
		if ($name_original != $element[Manuf]) {$name_original .= $element[Manuf];}
	}



Скажите, в данном случае не работает((
 

AntiBuger

Новичок
Скорее всего. Подскажи Фанат как сделать, что-то я запутался.
 

Фанат

oncle terrible
Команда форума
Я думаю, стоит прочесть описание этой функции в мануале, понять, как она работает, и написать свою.
 

AntiBuger

Новичок
Уважаемый Фанат, если Вы знаете могли бы и помочь, что бы не штудировать анг. мануалы. Впрочем разобрался. Если кому нужно будет, воспользуйтесь моей функцией

function columnSort($unsorted, $column, $method) {
$sorted = $unsorted;
for ($i=0; $i < sizeof($sorted)-1; $i++) {
for ($j=0; $j<sizeof($sorted)-1-$i; $j++)
if ($method=="ASC")
{
if ($sorted[$j][$column] > $sorted[$j+1][$column]) {
$tmp = $sorted[$j];
$sorted[$j] = $sorted[$j+1];
$sorted[$j+1] = $tmp;
}
}
else
{
if ($sorted[$j][$column] < $sorted[$j+1][$column]) {
$tmp = $sorted[$j];
$sorted[$j] = $sorted[$j+1];
$sorted[$j+1] = $tmp;
}
}
}
return $sorted;
}



Используйте ее так:
$result = columnSort($result, 'Price',"ASC");

Где $result ассоциативный массив, который нужно отсортировать по "Price"
Третий аргумен указывает на тип сортировки (по убыванию или возрастанию), если надо по убыванию, то пишите "DESC"
 

AntiBuger

Новичок
Где списал-то "своё" решение? там, где "помогли и не заставляли"? %)

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

"Где списал-то "своё" решение?" - шутник, 5 балов, пошутил так пошутил.... Если бы ты сам разбирался, то мог бы помочь, а так не флуди, пожалуйста.
 

keltanas

marty cats
AntiBuger
Твоя функция - это просто жесть. Задача решается в пару строк, если подумать. И всю информацию к размышлению тебе уже подбросили. Осталось переварить.
 
Сверху