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]   

> Без описания
kilogram
Отправлено: 07 Апреля, 2012 - 22:18:25
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Март 2012  


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




Попробовал вывести массив:

PHP:
скопировать код в буфер обмена
  1. for ($i=0,$x=0; $x<16; $x++) {
  2.   for ($y=0; $y<16; $y++) {
  3.     $chars[$x][$y] = array($i, chr($i));
  4.     $i++;
  5.   }
  6. }
  7.  
  8.  
  9. for ($i = 0; $i < count($chars); $i++)
  10.    for ($j = 0; $j < count($chars[$i]); $j++)
  11.       for ($k = 0; $k < count($chars[$i][$j]); $k++)
  12.           echo $chars[$i][$j][$k].' ';
  13.  
  14.  

Вроде вывел. Интересует вопрос. Почему во втором внутреннем форе нужно писать $chars[$i], а в третем форе $chars[$i][$j] ?


Отредактировано модератором: LIME, 08 Апреля, 2012 - 00:16:09
 
 Top
Bio man
Отправлено: 07 Апреля, 2012 - 22:20:26
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


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




изучи структуру массивы и подумай почему так.
 
 Top
kilogram
Отправлено: 07 Апреля, 2012 - 22:33:26
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Март 2012  


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




Изучил, вижу что здесь такое:
PHP:
скопировать код в буфер обмена
  1.  
  2. array(16) {
  3.   [0]=>
  4.   array(16) {
  5.     [0]=>
  6.     array(2) {
  7.       [0]=>
  8.       int(0)
  9.       [1]=>
  10.       string(1) ""
  11. ..........
  12. }
  13.  

Здесь трехмерній массив, не понятно как пробегает фор.
Почему там с i во втором форе, а в третем форе с i + j?
 
 Top
OrmaJever Модератор
Отправлено: 07 Апреля, 2012 - 22:37:00
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




ну потому что во втором форе считает вложеный масив, а доступ к нему только по ключу.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
kilogram
Отправлено: 07 Апреля, 2012 - 22:41:37
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Март 2012  


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




В каком смысле по ключу ко второму фору? А к третему тоже по ключу?
 
 Top
OrmaJever Модератор
Отправлено: 07 Апреля, 2012 - 22:49:03
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




kilogram попробуйте посмотреть результаты без цыкла.
PHP:
скопировать код в буфер обмена
  1. echo count($chars), '<br>';
  2. echo count($chars[0]), '<br>';
  3. echo count($chars[0][0]);
  4. print_r($chars);


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
kilogram
Отправлено: 07 Апреля, 2012 - 22:53:12
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Март 2012  


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




PHP:
скопировать код в буфер обмена
  1. 16
  2. 16
  3. 2
  4. (
  5.     [0] => Array
  6.         (
  7.             [0] => Array
  8.                 (
  9.                     [0] => 0
  10.                     [1] =>
  11.                 )
  12.  
  13.             [1] => Array
  14.                 (
  15.                     [0] => 1
  16.                     [1] => 
  17.                 )
  18.  
  19.             [2] => Array
  20.                 (
  21.                     [0] => 2
  22.                     [1] => 
  23.                 )

(Добавление)
Это вроде ясно, не понятно почему вот эти скобки дописывать нужно во втором и третем форе. Понятно, чтоб пробраться во внутренний массив, не могу понять почему эти скобки добавлять с [$i] и в третем цикле [$i][$j]
 
 Top
OrmaJever Модератор
Отправлено: 07 Апреля, 2012 - 23:19:26
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




ну потому что квадратные скобки это доступ к масиву. Для того что бы получить значение этого масива пишется его ключ. $chars - масив, ключи перебирает цыкл, $chars[$i] снова масив который доступ к которому осуществляется по ключу и т.д.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
kilogram
Отправлено: 07 Апреля, 2012 - 23:30:13
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Март 2012  


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




Цитата:
Для того что бы получить значение этого масива пишется его ключ.

Другими словами пишется переменная счетчика в квадратных скобках и чем больше многомерный массив тем больше квадратных скобок с разн. назв. переменных счетчика?
 
 Top
OrmaJever Модератор
Отправлено: 07 Апреля, 2012 - 23:34:07
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




Ну да, я даже не знаю как обьяснить потому что таких вопросов не задают. Люди обычно это сами понимают.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
kilogram
Отправлено: 08 Апреля, 2012 - 00:19:03
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Март 2012  


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




Пишутся квадратные скобки во втором, третем форе и дальше - это означает что мы получаем доступ к вложенному массиву через его счетчик?
 
 Top
Panoptik
Отправлено: 08 Апреля, 2012 - 00:31:45
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




разберите простой пример
PHP:
скопировать код в буфер обмена
  1.  
  2. $arr = array(); // создаем пустой массив $arr
  3. $arr[] = 1; //добавляем новый элемент к массиву, теперь в массиве будет элемент с индексом 0 и значение его будет 1 то есть $arr[0] == 1
  4. //эту же операцию можно осуществить другим способом
  5. $arr[0] = 1;
  6. //или
  7. $arr = array(0 => 1);
  8. //всё это были операции с одномерным массивом. но теперь если мы присвоим следующему значению уже существующего массива еще один массив. то получим двухмерный массив
  9. //делаем двухмерный массив
  10. $arr[] = array(0 => 1);
  11. //теперь у нашего массива $arr имеется 2 элемента 2-ой из которых массив, то есть
  12. //$arr[0] == 1
  13. //$arr[1] == array(0 => 1)
  14. //$arr[1][0] == 1
  15.  

может это вас подведет к пониманию массива

(Отредактировано автором: 08 Апреля, 2012 - 00:32:29)



-----
Just do it
 
 Top
kilogram
Отправлено: 08 Апреля, 2012 - 16:55:02
Post Id


Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Март 2012  


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




Доступ к внутреннему массиву в циклве фор, мы полчаем через индекс массива?
 
 Top
snikers987
Отправлено: 08 Апреля, 2012 - 17:19:37
Post Id



Участник


Покинул форум
Сообщений всего: 1239
Дата рег-ции: Сент. 2011  
Откуда: Крым


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




kilogram в любом случаи доступ к элементу массива осуществляется по ключу.


-----
Когда всматриваешься в тёмную бездну, учти, что кто-то может смотреть на тебя из неё...
 
My status
 Top
guitarain
Отправлено: 07 Января, 2014 - 10:10:10
Post Id


Новичок


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


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




Помогите, пожалуйста.
Есть таблица users, откуда извлекается class_id и id
Есть таблица homework, где каждая колонка-задание для класса.
В каждой колонке есть поле read_ids, где хранится id прочитавших задание(1,2,345,27345...).
Как проверить,прочитал пользователь с определённым id задание?
Заранее спасибо
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB