Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Операция над массивом 
V
    Опции темы
webevt
Дата 28.2.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 5.5.2005

Репутация: нет
Всего: 3



С помощью функции mysql_fetch_array () и цикла мы получаем многомерный ассоциативный массив вида $Arr [\числовой индекс\] ['\название поля\']. 

Этот массив выводится так:
Код

foreach ( $FetchResult as $txt )
  echo $txt ['text'] ."<br/>";


Вот функция получения массива:
Код

 function Fetch ( $Result, $Type = MYSQL_ASSOC )
 {
   if ( !$Result )
     trigger_error ( "Получен неверный результат запроса!" );

   while ( $FetchResult [] = mysql_fetch_array ( $Result, $Type ) ) { }

   return $FetchResult;
 }



Как из полученного массива ( или во время его получения ) сделать следующий массив вида:
$Arr ['\название поля\'] [\числовой индекс\]
На "изменение" массива желательно потратить как можно меньше ресурсов.

Вывод нового массива:
Код

foreach ( $FetchResult ['text'] as $txt )
  echo $txt ."<br/>";



Спасибо за внимание smile

Это сообщение отредактировал(а) webevt - 28.2.2008, 14:20
PM MAIL   Вверх
GeneralElectric
Дата 28.2.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



непонятно, какие сложности.
какой массив хочешь получить - так его и формируй.
$FetchResult ["text"][] = mysql_fetch_array ( $Result, $Type ) 
поскольку описание задачи невнятное, мой пример может не подойти


Это сообщение отредактировал(а) GeneralElectric - 28.2.2008, 14:23
PM MAIL   Вверх
webevt
Дата 28.2.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 5.5.2005

Репутация: нет
Всего: 3



GeneralElectric, дело в том, что я не знаю ключей ассоциативного массива. И mysql_fetch_array () возвращает все столбцы сразу, а не по одному

Попробую объяснить лушче..
Допустим, есть таблица:
Код

| id | text |
| 1  |  а   |
| 2  |  б   |
| 3  |  в   |
| 4  |  г   |
| 5  |  д   |
| 6  |  е   |
| 7  |  ё   |


Мне нужно из нее получить массив, содержащий два массива( id и text ), в которых будут находится все значения таблицы. Тоесть, массив $FetchResult ['id'] будет содержать все значения столбца  id , а массив $FetchResult ['text']  - все значения столбца text данной таблицы.

Это сообщение отредактировал(а) webevt - 28.2.2008, 15:11
PM MAIL   Вверх
Kaiden
Дата 28.2.2008, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 26.11.2007

Репутация: нет
Всего: нет



Если я вас правильно понял, то такой код должен подойти.
Код

$result = mysql_query('SELECT * FROM `table`');
$len = mysql_num_rows($result);
for ( $i = 0; $i < $len; $i++ ) {
    $row = mysql_fetch_assoc($result);
    foreach ( $row as $key => $value )
        $FetchResult[$key][$i] = $value;
}

PM MAIL   Вверх
webevt
Дата 29.2.2008, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 5.5.2005

Репутация: нет
Всего: 3



Kaiden, вариант, но я примерно такой уже писал...
Не много ли такой код ресурсов кушает, если массив достаточно большой(> 20 полей, > 100 записей) получатся?
Вот перечитываю все функции по массивам, мож чего-то с фильтрациями и пересечаниями выйдет...
PM MAIL   Вверх
GeneralElectric
Дата 29.2.2008, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



непонятно, с чего этот код будет кушать много ресурсов.
непонятно, откуда вообще такая забота о ресурсах на пустом месте.
непонятно, почему надо просить других людей писать точно такой же код, какой уже сам написал. Почему сразу его не показать и не привести обоснованные сомнения в производительности?

а самое главное непонятно - точно ли надо обрабатывать все эти данные в скрипте, а не средствами базы...
PM MAIL   Вверх
webevt
Дата 29.2.2008, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 5.5.2005

Репутация: нет
Всего: 3



Цитата(GeneralElectric @  29.2.2008,  10:16 Найти цитируемый пост)
точно ли надо обрабатывать все эти данные в скрипте, а не средствами базы... 

Писать во всех модулях запросы по каждому из полей таблицы - не выгодно.


Цитата(GeneralElectric @  29.2.2008,  10:16 Найти цитируемый пост)
непонятно, с чего этот код будет кушать много ресурсов.

Если не будет, то все ок)


Цитата(GeneralElectric @  29.2.2008,  10:16 Найти цитируемый пост)
непонятно, откуда вообще такая забота о ресурсах на пустом месте.

Экономия ресурсов - святое дело, ибо их много не бывает


Цитата(GeneralElectric @  29.2.2008,  10:16 Найти цитируемый пост)
непонятно, почему надо просить других людей писать точно такой же код, какой уже сам написал. Почему сразу его не показать и не привести обоснованные сомнения в производительности?

Думал, что получу здесь вариант лучше, а свой стеснялся выложить, ибо больно убого эти циклы выглядят)
PM MAIL   Вверх
GeneralElectric
Дата 29.2.2008, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



Цитата(webevt @  29.2.2008,  13:34 Найти цитируемый пост)
Цитата(GeneralElectric @  29.2.2008,  10:16 )
Писать во всех модулях запросы по каждому из полей таблицы - не выгодно.

Не понял, какая связь. Это настройки какие-то, что ли?
Цитата(webevt @  29.2.2008,  13:34 Найти цитируемый пост)
Экономия ресурсов - святое дело

Нет. Наоборот. Не святое, я от лукавого.
Всем борцам за ресурсы рекомендую пересесть на ассемблер. Или перестать вспоминать о ресурсах по любому поводу, к месту и не к месту.
Копейку, которая валяется на дороге, подберет не каждый. А производительность участка, который сранвим с производительностью всего скрипта, как копецка - с месячной зарплатой, будут отлаживать неделями.
Цитата(webevt @  29.2.2008,  13:34 Найти цитируемый пост)
 а свой стеснялся выложить

лучше бы ты постеснялся напрягать людей делать бесполезную работу.
PM MAIL   Вверх
webevt
Дата 29.2.2008, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 5.5.2005

Репутация: нет
Всего: 3



GeneralElectric, 
 чтобы получить такой массив, какой мне нужен, средствами базы, нужно делать выборку каждого поля в таблице, многовато запросов для получения одного массива.

В общем, вопрос решен)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1118 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.