понедельник, 10 сентября 2012 г.

Как сортировкать массивы в PHP по нескольким полям

Задался тут вопросом как сортировать в PHP массивы по нескольким ключам, поискал (не сильно долго в инете) ничего не нашел, а потому придумал свой вариант.

Все очень просто, и делается за три прохода:
1. Пробегаете ваш массив и одновременно создаете новый (tmp), где ключ - ключ в исходном массиве, а значение склейка ключей. Например для строковых $a.'-'.$b.'-'.$c, а для числовых можно воспользоваться умножением.
2. Сортируете полученный массив sort или rsort
3. Создаете новый массив пробегая по отсортированному tmp, создавая массив по заданному значению из tmp и значению из исходного массива.

Это возможно лишь потому, что PHP при создании нового элемента массива элемент точно добавляется в конец, в Perl это бы не прокатило. Там он бы попал по хешу для сортировки. Да и сортировать в Perl'е гораздо легче, следует лишь указать любую пользовательскую функцию перед sort. Да и Perl круче PHP, но пост совсем не про это....

пятница, 7 сентября 2012 г.

Firebird & x64 & Linux

А вернее Suse, значит на сервер наш администратор поставил deleveper пакеты Firebird и мы там ж, стали компилить наш проект. Он скомпилилися (ну вернее скомпилился после указания пару флагов компилятору про точность - но это gcc и сам отлично показывал).

Но затем при некой выборке из БД, выдавал какую-то ересь, причем полезли в дебри заголовочных файлов isbase.h нашли там ISC_INT64.

Для спецов скажу - там не учитывается x64 режим, нужно ставить еще define на просто int.

Для не спецов скажу - это пиздец товарищи когда ставишь delevoper пакет ожидаешь что он не будет содержать ошибки.