<?php
function sortBy ( $arr, $sortKey )
{
/*Временный массив для сотритовки по нужному ключу*/
$tempArr = array();
/*Возвращаемый массив*/
$returnArr = array();
/*Перебор всего массива*/
foreach ( $arr AS $key=>$value )
{
/*Запись в массив значений ключа по которому быдет выполнена сортировка*/
$tempArr[$key] = $value[$sortKey];
}
/*Сортировка значений с сохранением ключей*/
asort ( $tempArr );
/*Установка указателя массива не первый элемент*/
reset ( $tempArr );
/*Перебор всего временного массива*/
foreach ( $tempArr AS $key=>$value )
{
/*Формирование возвращаемого массива*/
$returnArr[] = $arr[$key];
}
return $returnArr;
}
function sortByObj ( $arr, $sortKey )
{
/*Временный массив для сотритовки по нужному ключу*/
$tempArr = array();
/*Возвращаемый массив*/
$returnArr = array();
/*Перебор всего массива*/
foreach ( $arr AS $key=>$value )
{
/*Запись в массив значений ключа по которому быдет выполнена сортировка*/
$tempArr[$key] = $value->{$sortKey};
}
/*Сортировка значений с сохранением ключей*/
asort ( $tempArr );
/*Установка указателя массива не первый элемент*/
reset ( $tempArr );
/*Перебор всего временного массива*/
foreach ( $tempArr AS $key=>$value )
{
/*Формирование возвращаемого массива*/
$returnArr[] = $arr[$key];
}
return $returnArr;
}
/*Ключ по которому будет выполнена сортировка*/
$sortKey = "name";
/*Второй ключ присутствующий в массиве*/
$secondKey = "data";
$arr[1]['data'] = "2010";
$arr[1]['name'] = "Петя";
$arr[2]['data'] = "2012";
$arr[2]['name'] = "Вася";
$arr[3]['data'] = "2011";
$arr[3]['name'] = "Саша";
$ar = array();
$obj = new stdClass();
$obj->ID = 1;
$obj->Name = 'Дискета';
$ar[] = $obj;
$obj = new stdClass();
$obj->ID = 3;
$obj->Name = 'E-token';
$ar[] = $obj;
$obj = new stdClass();
$obj->ID = 2;
$obj->Name = 'Rutoken';
$ar[] = $obj;
$obj = new stdClass();
$obj->ID = 4;
$obj->Name = 'Флеш накопитель';
$ar[] = $obj;
$sortName = 'Name';
$sf = 'ID';
/*
[0] => stdClass Object
(
[ID] => 1
[Name] => Дискета
)
[1] => stdClass Object
(
[ID] => 3
[Name] => E-token
)
[2] => stdClass Object
(
[ID] => 2
[Name] => Rutoken
)
[3] => stdClass Object
(
[ID] => 4
[Name] => Флеш накопитель
)
*/
$sortedArr = sortBy( $arr, $sortKey );
foreach ( $sortedArr AS $key=>$value )
{
echo $key.' = '. $value[$sortKey] . " - " . $value[$secondKey] . "<br />";
}
echo('<br>'."\n\n");
$sArr = sortByObj( $ar, $sortName );
print_r($sArr);
- Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.0 - 5.5.38, 5.6.0 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- 0 = Вася - 2012<br />1 = Петя - 2010<br />2 = Саша - 2011<br /><br>
Array
(
[0] => stdClass Object
(
[ID] => 3
[Name] => E-token
)
[1] => stdClass Object
(
[ID] => 2
[Name] => Rutoken
)
[2] => stdClass Object
(
[ID] => 1
[Name] => Дискета
)
[3] => stdClass Object
(
[ID] => 4
[Name] => Флеш накопитель
)
)
preferences:
251.09 ms | 407 KiB | 398 Q