[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сортировка и вывод массива
Евгений Щукин
Добрый день!
Не могу получить данные на выходе. Выдает:
"Сортировка двухмерного массива
||||||"


echo "<br>Сортировка двухмерного массива<br>";
$products = array( array( "TIR", "Tires", "100" ),
array( "OIL", "Oil", "10" ),
array( "SPK", "Spark Plugs", "4" )
) ;

function compare($x, $y) //создаем новую функцию - аналога в php нет. назвали функцию compare(). В данном случае значение переменной - один из массивов (код или значение)
{
if ( $х[1] == $у[1] ) //сортировка будет идти по второму столбцу
return 0;
else
return ($x[1] < $у[1]) ? -1 : 1 ; //сортировать будем по возрастанию, т.к. стоит -1, а не 1
}
usort($products, compare); // usort - Пользовательская функция сортирвки - для многомерных массивов
for ($gb; $gb < 3 ; $gb++ )
{
for ($qq; $qq < 3 ; $qq++)
{
echo "|".$products [$gb] [$qq] ;
}
echo $aa[$gb]."|" ;
}
Евгений Щукин
Блин, 0 забыл!) Все, разобрался). Всем спасибо!
sergeiss
(Хоть ты и пишешь, что разобрался, но я ответ уже набрал :))
Цитата (Евгений Щукин @ 22.01.2015 - 14:44)
for ($gb; $gb < 3 ; $gb++ )

Цитата (Евгений Щукин @ 22.01.2015 - 14:44)
for ($qq; $qq < 3 ; $qq++)

Ты не инициализировал переменные; надо так:
		for ($gb=0; $gb < 3 ; $gb++ ) 
{
for ($qq=0; $qq < 3 ; $qq++)
{
echo "|".$products [$gb] [$qq] ;
}
echo $aa[$gb]."|" ;
}


И еще я не понял, что это за переменная такая? В твоем коде ее не видно нигде, чтобы она была инициализирована:
Цитата (Евгений Щукин @ 22.01.2015 - 14:44)
echo $aa[$gb]."|" ;


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Евгений Щукин
"(Хоть ты и пишешь, что разобрался, но я ответ уже набрал :))"
- Спасибо!

"И еще я не понял, что это за переменная такая? В твоем коде ее не видно нигде, чтобы она была инициализирована:"
- Да, лишняя переменная. Это я пытался вывод сделать. Недоубирал)

По тому же коду другая проблема получилась. Вывод заработал, а сортировка не хочет меняться. Могу только изменить знак "<" или ">" для изменения сортировки. (return ($x[1] < $у[1]))

Как понял, критерий сортировки должен быть заложен в индексе [1]/ Меняю этот индекс на 0 или 2 - ничего не меняется. Так и должно быть?



$products = array( array( "TIR", "Tires", "100" ),
array( "OIL", "Oil", "10" ),
array( "SPK", "Spark Plugs", "4" )
) ;

function compare($x, $y) //создаем новую функцию - аналога в php нет. назвали функцию compare(). В данном случае значение переменной - один из массивов (код или значение)
{
if ( $х[1] == $у[1] ) //сортировка будет идти по второму столбцу
return 0;
else
return ($x[1] < $у[1]) ? -1 : 1 ; // знак < или > указывает направление сортировки
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.