Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: удобная работа с многомерными массивами

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Antonim
Отправлено: 14 Апреля, 2009 - 14:55:53
Post Id


Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2008  


Помог: 1 раз(а)

[+]


доброго врпмени суток у меня след ситуация. достаю из базы данные, но дабы не лепить код с html хочу чтоб в html php было по минимуму пожтому достаю данные в многомерный массив вот так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. while ($row = mysql_fetch_array($result,MYSQL_NUM))
  4. {
  5.         $MODER[]['login'] = $row[0];
  6.         $MODER[]['dt'] = $row[1];
  7. }
  8. ?>
  9.  

после этого не знаю как удобно работать с таким массивом. Вот перебор сделал:
PHP:
скопировать код в буфер обмена
  1.                        
  2. <?PHP
  3. foreach($MODER as $v1)
  4. {
  5.         foreach ($v1 as $v2)
  6.        {
  7.                 echo "$v2";
  8.         }
  9. }
  10. ?>
  11.  

Но он очень не удобен. Хотел бы сделать что-то типа
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. while ($MODER не кончиться )
  4. {
  5.    //обращаемся типа $MODER['login'] получаем или  $MODER['dt']
  6. }
  7. ?>
  8.  


Отредактировано администратором: EuGen, 14 Апреля, 2009 - 15:12:16
Используйте теги php для подсветки кода, так легче его читать
 
 Top
EuGen Администратор
Отправлено: 14 Апреля, 2009 - 15:09:38
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Во-первых, код у Вас с ошибкой. При выполнении
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $MODER[]['login'] = $row[0];
  4. $MODER[]['dt'] = $row[1];
  5. ?>
  6.  

Вы получите вот что - в первый элемент массива попадет Ваше поле login, а вот dt уже будет лежать во втором элементе массива. То есть явно не то, что хотелось бы.
Исправить несложно:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. while ($row = mysql_fetch_array($result,MYSQL_NUM))
  4. {
  5.    $tmp=array('login'=>$row[0], 'dt'=>$row[1]);
  6.    $MODER[]=$tmp;
  7. }
  8. ?>
  9.  

Во-вторых, чем Вас не устраивает foreach? Он для этого и сделан. while в данном случае принуждает к изобретению этого-самого условия "пока есть модеры" - излишне.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Champion Супермодератор
Отправлено: 14 Апреля, 2009 - 16:25:54
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Antonim пишет:
после этого не знаю как удобно работать с таким массивом

Еще хочу заметить, что удобно сначала понять какое представление данных будет проще обработать, а потом представлять данные в таком виде. А не сначала сделать, а потом ломать голову, как это обработать. Это раз.
А во-вторых, когда не знаешь, как обратиться к массиву, сделай var_dump(массив) и увидишь и индексы, и значения...
 
 Top
Гость
Отправлено: 14 Апреля, 2009 - 18:44:01
Post Id


УДАЛЁН










Цитата:
$MODER[]['login'] = $row[0];
$MODER[]['dt'] = $row[1];
Честно скажу я бы вообще не тсал использовать такую записть так как она чревата ошибками и при разборе кода программы весьма неочевидна что имелось в виду
 
 Top
Stierus Супермодератор
Отправлено: 15 Апреля, 2009 - 08:29:33
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Цитата:
Честно скажу я бы вообще не тсал использовать такую записть так как она чревата ошибками и при разборе кода программы весьма неочевидна что имелось в виду
А я бы не стал её использовать потому, что она не будет работать Улыбка
 
My status
 Top
Champion Супермодератор
Отправлено: 15 Апреля, 2009 - 08:49:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Stierus пишет:
А я бы не стал её использовать потому, что она не будет работать
Да нет, работать- то будет, но явно не так, как автор ждет. А так, как EuGen описал
 
 Top
Stierus Супермодератор
Отправлено: 15 Апреля, 2009 - 08:53:01
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Работать не так, как планировалось, я считаю, как не работать
 
My status
 Top
Champion Супермодератор
Отправлено: 15 Апреля, 2009 - 08:54:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


Помог: 57 раз(а)




Тоже правильно. Думаю, тему можно закрыть. У автора вопросов больше не появилось, а разговор пошел вокруг
Тема закрыта!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB