- reset: documentation ( source)
- print_r: documentation ( source)
- asort: documentation ( source)
<?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 = sortBy( $ar, $sortName );
print_r($sArr);