1.
Тitov, способ получше за счет более доработанной функции которая не одноразовая, а может использоваться во всех массивах и с разными типами сортировки
<?
function multisort($array)
{
for($i = 1; $i < func_num_args(); $i += 3)
{
$key = func_get_arg($i);
if (is_string($key)) $key = '"'.$key.'"';
$order = true;
if($i + 1 < func_num_args())
$order = func_get_arg($i + 1);
$type = 0;
if($i + 2 < func_num_args())
$type = func_get_arg($i + 2);
switch($type)
{
case 1: // Case insensitive natural.
$t = 'strcasecmp($a[' . $key . '], $b[' . $key . '])';
break;
case 2: // Numeric.
$t = '($a[' . $key . '] == $b[' . $key . ']) ? 0:( ($a[' . $key . '] < $b[' . $key . ']) ? -1 : 1)';
break;
case 3: // Case sensitive string.
$t = 'strcmp($a[' . $key . '], $b[' . $key . '])';
break;
case 4: // Case insensitive string.
$t = 'strcasecmp($a[' . $key . '], $b[' . $key . '])';
break;
default: // Case sensitive natural.
$t = 'strnatcmp($a[' . $key . '], $b[' . $key . '])';
break;
}
usort($array, create_function('$a, $b', '; return ' . ($order ? '' : '-') . '(' . $t . ');'));
}
return $array;
}
$file = file('file.txt');
$arr = array();
foreach ($file as $data){
$array = explode (':|:', $data);
$arr[] = $array;
}
$arr = multisort ($arr, 3, false, 2);
multisort (массив, ключ, сортировка ASC-DESC, способ type);
все кроме массива не обязательны, думаю разберешься, эту функцию и советую