Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Выборка из БД в массив и его сортировка


Автор: DiMoN_TD 28.12.2007, 01:26
Такой вот вопрос.
У меня есть данные в БД, но в поле несколько столбцов, которые мне нужно занести в массив. Т.е. это должен быть явно не одномернный массив. Как это можно реализовать?
И попутный вопрос, такой массив можно будет отсортировать функцией sort() ??
Заранее благодарен за ответ! =)

Автор: SelenIT 28.12.2007, 01:30
Цитата(DiMoN_TD @  28.12.2007,  01:26 Найти цитируемый пост)
в поле несколько столбцов

Это как? smile

Цитата(DiMoN_TD @  28.12.2007,  01:26 Найти цитируемый пост)
такой массив можно будет отсортировать функцией sort() ??

Боюсь что нет. Для таких массивов есть другие ф-ции - usort и ее разновидности, array_multisort...

Автор: skyboy 28.12.2007, 01:34
Цитата(DiMoN_TD @  28.12.2007,  00:26 Найти цитируемый пост)
но в поле несколько столбцов

денормализовано? в виде строки текста с разделителями?
если да - подумай над нормализацией. будешь сортировать средствами СУБД.

Автор: DiMoN_TD 28.12.2007, 01:38
ну т.е. у меня есть таблица, в этой таблице поля, вот одно поле имеет несколько столбцов, например: id, name, age ну и т.д. Так вот мне это нужно поместить в ассоциативный массив (кажись так его называют) по типу: $arr [id][name][age]
Можно ли так сделать?

Автор: N0dwis 28.12.2007, 09:02
Вот функция из моего класса работы с базами данных, там есть нужный кусок:
Код

 /******************************************
     * Запрос к базе данных.
     * В результате возвращает ассоциативную таблицу,
     * содержащий результаты запроса
    ******************************************/ 
    public function Query($query, $isret)
    {
        $res = mysql_query($query, $this->connection);
        $this->num_of_queries++;
        if (!$res)
            return $res;
        // смотреть отсюда
        $ret = array();
        if ($isret)
        {
            $i = 0;
            while($res_row = mysql_fetch_assoc($res))
                $ret[$i++] = $res_row;
        }
        // досюда
        return $ret;
    }

Автор: olegop 28.12.2007, 09:48
DiMoN_TD, помоему в MySQL такого понятия как столбцы нет, есть поля и есть записи, а из ходя из 
Цитата(DiMoN_TD @  28.12.2007,  01:38 Найти цитируемый пост)
вот одно поле имеет несколько столбцов,

простым языком да (поле называется столбцом, а запись величают строкой) поэтому для меня фраза из цитаты абракадабра какая-то 

Автор: DiMoN_TD 29.12.2007, 09:08
N0dwis, 
дык мне нужен ассоциативный массив...

Автор: gta4kv 29.12.2007, 09:41
Цитата(DiMoN_TD @ 29.12.2007,  09:08)
N0dwis, 
дык мне нужен ассоциативный массив...


Код

$q = mysql_query( 'select downs from ss_jobs ' );
$r = mysql_fetch_array( $q );

$array_size = sizeof ( $r ) - 1;
$array_map = array_keys ( $r );

for ( $i=0; $i<=$array_size; $i++ )
{    
    $array[ $r[ $array_map [ $i ] ] ] = $r[ $i ];
}
    


Писал на шару, так что тут не точно.. но в целом если я прально понял то нужно это.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)