[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сортировка массива
maximka787
Ребят, помогите пожалуйста, нужно отсортировать массив 1, относительно массива 2
print_r(mass1);
Array ( [4] => 38 [2] => 35 [5] => 33 [1] => 31 [3] => 28 )

print_r(mass2);
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )

надо, чтобы элементы в массиве 2 шли в той же последовательности как и в первом.



Спустя 7 минут, 5 секунд (5.08.2011 - 12:39) linker написал(а):
usort() тебе в помощь.

Спустя 13 минут, 38 секунд (5.08.2011 - 12:53) maximka787 написал(а):
linker
Это хорошая функция. но она сортирует по значениям, но при этом индексы новые дает.

может я не правильно понимаю
Есть команды спортивные, которые сортируются по значению от большего. В моем примере: 4, 2, 5, 1, 3
Array ( [4] => 38 [2] => 35 [5] => 33 [1] => 31 [3] => 28  )


Мне надо делать сортировку второго массива, по ключам первго

foreach ($mass as $key => $value) в этом том порядке 4, 2, 5, 1, 3

поэтому массив Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
надо преобразовать в
Array ( [0] => 4 [1] => 2 [2] => 5 [3] => 1 [4] => 3 )

Спустя 11 минут, 22 секунды (5.08.2011 - 13:04) Winston написал(а):
Так ?
$arr = Array (4 => 38, 2 => 35, 5 => 33, 1 => 31, 3 => 28);
print_r(array_keys($arr));

Спустя 1 минута, 11 секунд (5.08.2011 - 13:05) maximka787 написал(а):
PHPprogrammer
о интересно, проверим сейчас

Спустя 45 минут, 58 секунд (5.08.2011 - 13:51) maximka787 написал(а):
$arr1 = Array (
1 => 'январь',
2 => 'февраль',
3 => 'март',
4 => 'апрель');
// массив информационный

$arr2 = Array (4 => 38, 2 => 35, 3 => 33, 1 => 31); // массив для сортировки, важны только ключи массива
// получаем последовательность для вывода массива 1

$newsort = array_keys($arr2);
print_r($newsort); // Array ( [0] => 4 [1] => 2 [2] => 3 [3] => 1 )
//4,2,3,1 вот такой порядок вывода для первого массива


foreach($newsort AS $key => $value){
echo '<br>'.$arr1[$key];
}


НЕ могу вывести в вот так
апрель
февраль
март
январь

Спустя 6 минут, 31 секунда (5.08.2011 - 13:58) Winston написал(а):
Так
$arr2 = Array (4 => 38, 2 => 35, 3 => 33, 1 => 31);  // массив для сортировки, важны только ключи массива 
// получаем последовательность для вывода массива 1

$newsort = array_flip(array_keys($arr2));
print_r($newsort); // Array ( [0] => 4 [1] => 2 [2] => 3 [3] => 1 )
//4,2,3,1 вот такой порядок вывода для первого массива


foreach($newsort AS $key => $value)
echo '<br>'.$arr1[$key];

Спустя 8 минут, 21 секунда (5.08.2011 - 14:06) Winston написал(а):
Цитата (maximka787 @ 5.08.2011 - 13:51)
print_r($newsort); // Array ( [0] => 4 [1] => 2 [2] => 3 [3] => 1 )

Цитата (maximka787 @ 5.08.2011 - 13:51)
foreach($newsort AS $key => $value){

Если посмотреть на эти строки то можно заметить, что
в $key будут индексы 0 1 2 3
И ты их потом выводишь
echo $arr1[0];
echo $arr1[1];
echo $arr1[2];
echo $arr1[3];

Спустя 11 минут (5.08.2011 - 14:17) maximka787 написал(а):
Спасибо, буду разбирать. Пример рабочий, если что напишу сюда)


_____________
..Работает - не трогай!
Быстрый ответ:

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