Сортировка массива

Andronik

Новичок
Сортировка массива

Такая возникла задача. Нужно отсортировать массив следующим образом. Например, есть массив:
$stack = array("text?str","textstr","textstr","text?str");
В результате сортировки должно получиться:
$stack = array("text?str","text?str","textstr","textstr");

Тоесть, если в значении есть "?", это значение выводится на первые позиции. В хелпе не нашёл какой-либо функции, которая так сортировала бы массив. Если нет такой функции, как можно подобное реализовать самому. Хоть направление, в которое смотреть в Googlе ничего так же не нашёл.
 

Andronik

Новичок
Гранд Мерси!!!

-~{}~ 24.11.05 15:36:

Совсем запутался теперь как в данной ситуации оставшиеся после сортировки по своему условию элементы массива отсортировать по алфавиту?

Например,
PHP:
<?

function cmp($a) 
{
return (strstr($a, "?")==false) ? -1 : 1;

}

$a = array("txt?t", "mal?u", "kol", "bit?l", "bo");

usort($a, "cmp");

while (list($key, $value) = each($a)) {
   echo "$key: $value.<br>";
}

?>
Справедливо выводит:
0: bo.
1: kol.
2: txt?t.
3: bit?l.
4: mal?u.

таким образом перемещая на первые места значения без "?".
Но следующие за ними значения идут подряд. Помогите тормозу!
 

whirlwind

TDD infected, paranoid
Ты $a с чем сравниваешь? Куда $b подевалась? В функции cmp проверь обе строки на наличие ?. Если в обеих есть ?, тогда сравнивай как обычные строки.
 

Andronik

Новичок
Всё получилось.
Жить становится лучше! Жить становиться веселее!
Спасибо, whirlwind!
 
Сверху