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

Форум PHP

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Сортировка массива
 
 автор: sd607   (17.05.2007 в 02:38)   письмо автору
 
 

Есть массив:

<?php
$my_array
[0]['id']=5;
$my_array[0]['age']=18;

$my_array[1]['id']=6;
$my_array[1]['age']=19;

$my_array[2]['id']=7;
$my_array[2]['age']=20;
?>


Нужно отсортировать его по убыванию по age. Подскажите плиз как это можно реализовать.

   
 
 автор: mefestofel   (17.05.2007 в 03:20)   письмо автору
 
   для: sd607   (17.05.2007 в 02:38)
 

функция array_multisort()

   
 
 автор: mefestofel   (17.05.2007 в 03:41)   письмо автору
 
   для: mefestofel   (17.05.2007 в 03:20)
 

Вот Ваш код:

<?php
$my_array
[0]['id']=5
$my_array[0]['age']=18;

$my_array[1]['id']=7
$my_array[1]['age']=20

$my_array[2]['id']=6
$my_array[2]['age']=19

$my_array[3]['id']=7
$my_array[3]['age']=21;

$my_array[4]['id']=7
$my_array[4]['age']=17


function 
multi_sort($my_array$akey)

  function 
compare($a$b)
  {
     global 
$key;
     if (
$a[$key]>$b[$key]){
         
$var "-1";
         return 
$var;
     }
     elseif (
$a[$key]<$b[$key]){
         
$var "1";
         return 
$var;
     }
     elseif (
$a[$key]==$b[$key]){
         
$var "0";
         return 
$var;
     }
  }
  
usort($my_array"compare");
  return 
$my_array;


$my_array multi_sort($my_array$key 'age');
print_r($my_array);
?>

   
 
 автор: mefestofel   (17.05.2007 в 03:42)   письмо автору
 
   для: mefestofel   (17.05.2007 в 03:41)
 

За корявость не серчайте - уже 4.00 мозги кипят...

   
 
 автор: Valick   (17.05.2007 в 04:10)   письмо автору
 
   для: mefestofel   (17.05.2007 в 03:42)
 

Я тут ни в одной из своих книг Аррэй_мультисорт не могу найти..... я в панике...

Кстати в вашем коде я не увидел функции Аррэй_мультисорт, чем это вызвано?)

   
 
 автор: mefestofel   (17.05.2007 в 04:39)   письмо автору
 
   для: Valick   (17.05.2007 в 04:10)
 

я ее не использовал :-)

   
 
 автор: mefestofel   (17.05.2007 в 04:40)   письмо автору
 
   для: mefestofel   (17.05.2007 в 04:39)
 


bool array_multisort ( array $ar1 [, mixed $arg [, mixed $... [, array $...]]] )

Returns TRUE on success or FALSE on failure.

array_multisort() can be used to sort several arrays at once, or a multi-dimensional array by one or more dimensions.

Associative (string) keys will be maintained, but numeric keys will be re-indexed.

The input arrays are treated as columns of a table to be sorted by rows - this resembles the functionality of SQL ORDER BY clause. The first array is the primary one to sort by. The rows (values) in that array that compare the same are sorted by the next input array, and so on.

The argument structure of this function is a bit unusual, but flexible. The first argument has to be an array. Subsequently, each argument can be either an array or a sorting flag from the following lists.

Sorting order flags:

SORT_ASC - Sort in ascending order
SORT_DESC - Sort in descending order

Sorting type flags:

SORT_REGULAR - Compare items normally
SORT_NUMERIC - Compare items numerically
SORT_STRING - Compare items as strings

   
 
 автор: mefestofel   (17.05.2007 в 04:41)   письмо автору
 
   для: mefestofel   (17.05.2007 в 04:40)
 

PHP4, PHP5

   
 
 автор: mefestofel   (17.05.2007 в 04:46)   письмо автору
 
   для: mefestofel   (17.05.2007 в 04:41)
 

завтра дам ссылку, на вменяемый ресурс, да остался я один на форуме, все исчезли :-(

   
 
 автор: Valick   (17.05.2007 в 08:09)   письмо автору
 
   для: mefestofel   (17.05.2007 в 04:46)
 

Да я нашёл и ссылки, и всё такое... а вот в книгах нет((, а у меня их около 10 по РНР.

Просто в 3.20 я попытался при помощи Аррей_мультисорт решить задачу, к 3.35 сломал себе мозг, выключил комп лёг спать, в 3.45 включил комп увидел ваше решение немного успокоился))

Просто из-за недостаточности знаний я пытался работать с массивом как с множеством, и у меня бы в итоге получился довольно громоздский код. (и опять же скорее всего без Аррей_мультисорт) Работать с этим массивом как со списком я бы точно не догадался.

З.Ы. Липтону я не успел сказать самого главного - я не программист ;-)

   
 
 автор: mefestofel   (17.05.2007 в 12:38)   письмо автору
 
   для: Valick   (17.05.2007 в 08:09)
 

По работе с массивами, здесь есть описания функций для работы с массивами:

http://www.phpclub.net/manrus/f/ref.array.html
Да вообще много интересных функций, кторые редко используют... :-)
>З.Ы. Липтону я не успел сказать самого главного - я не программист ;-)
А кто же? ;-)

   
Rambler's Top100
вверх

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