Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.04.2012, 23:17
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

трехмерные массивы
Попробовал вывести массив:
Код:
for ($i=0,$x=0; $x<16; $x++) {
  for ($y=0; $y<16; $y++) {
    $chars[$x][$y] = array($i, chr($i));
    $i++;
  }
}


for ($i = 0; $i < count($chars); $i++)
   for ($j = 0; $j < count($chars[$i]); $j++)
      for ($k = 0; $k < count($chars[$i][$j]); $k++)
          echo $chars[$i][$j][$k].' ';
Вроде вывел. Интересует вопрос. Почему во втором внутреннем форе нужно писать $chars[$i], а в третем форе $chars[$i][$j] ?
Ответить с цитированием
  #2 (permalink)  
Старый 08.04.2012, 00:02
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

потому, что:
1. массив трехмерный
2. если написать $chars[$i][$i] — то ключи будут только такими:
$chars[0][0]; $chars[1][1]; $chars[2][2] и т.д.

а чтоб они перебирались, во втором массиве счетчик идет для первых индексов, а в третьем — для вторых, и тогда получится:
$chars[0][0]; $chars[0][1]; $chars[0][2] ...
$chars[1][0]; $chars[1][1]; $chars[1][2] ...
$chars[2][0]; $chars[2][1]; $chars[2][2] ...

т.е. берем сначала первый индекс (например, 0), выводим всё, что есть с ним: 0-0, 0-1, 0-2

потом второй и т.д.
__________________
С моих слов записано верно.
Ответить с цитированием
  #3 (permalink)  
Старый 08.04.2012, 00:04
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

То есть нужно перейти к счетчику во втором форе, а к третему фору, нужно сразу 2 счетчика? Почему?
Ответить с цитированием
  #4 (permalink)  
Старый 08.04.2012, 00:11
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

да, только в третьем форе уже три счетчика (как у тебя в примере).

$i — первый счетчик для:

$chars[i] — первое "измерение" массива

$j — второй для:
$chars[i][j] — второе "измерение" массива

$k — третий
$chars[i][j][k] — третье "измерение" массива

выполняются они так:
$i = 0 : {
             $j = 0 : {
                           $k = 0;
                           $k = 1;
                           $k = 2;
                           ....
                           $k = 99999;
                         }
             $j = 1 : {
                           $k = 0;
                           $k = 1;
                           $k = 2;
                           ....
                           $k = 99999;
                         }
             $j = 2 : {
                           $k = 0;
                           $k = 1;
                           $k = 2;
                           ....
                           $k = 99999;
                         }
...
             $j = 9999 : {
                           $k = 0;
                           $k = 1;
                           $k = 2;
                           ....
                           $k = 99999;
                         }
}

$i = 1 : {
             $j = 0 : {
                           $k = 0;
                           $k = 1;
                           $k = 2;
                           ....
                           $k = 99999;
                         }
             $j = 1 : {
                           $k = 0;
                           $k = 1;
                           $k = 2;
                           ....
                           $k = 99999;
                         }
             $j = 2 : {
                           $k = 0;
                           $k = 1;
                           $k = 2;
                           ....
                           $k = 99999;
                         }
...
             $j = 9999 : {
                           $k = 0;
                           $k = 1;
                           $k = 2;
                           ....
                           $k = 99999;
                         }
}

$i = 2 : {
             $j = 0 : {
                           $k = 0;
                           $k = 1;
                           $k = 2;
                           ....
                           $k = 99999;
                         }
             $j = 1 : {
                           $k = 0;
                           $k = 1;
                           $k = 2;
                           ....
                           $k = 99999;
                         }
             $j = 2 : {
                           $k = 0;
                           $k = 1;
                           $k = 2;
                           ....
                           $k = 99999;
                         }
...
             $j = 9999 : {
                           $k = 0;
                           $k = 1;
                           $k = 2;
                           ....
                           $k = 99999;
                         }
}
....
__________________
С моих слов записано верно.
Ответить с цитированием
  #5 (permalink)  
Старый 08.04.2012, 01:00
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

Пишутся квадратные скобки во втором, третем форе и дальше - это означает что мы получаем доступ к вложенному массиву через его счетчик?
Ответить с цитированием
  #6 (permalink)  
Старый 08.04.2012, 01:01
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

Сообщение от kilogram Посмотреть сообщение
Пишутся квадратные скобки во втором, третем форе и дальше - это означает что мы получаем доступ к вложенному массиву через его счетчик?
да
__________________
С моих слов записано верно.
Ответить с цитированием
  #7 (permalink)  
Старый 08.04.2012, 17:55
Профессор
Отправить личное сообщение для kilogram Посмотреть профиль Найти все сообщения от kilogram
 
Регистрация: 19.03.2012
Сообщений: 163

Доступ к внутреннему массиву в циклве фор, мы полчаем через индекс массива?
Ответить с цитированием
  #8 (permalink)  
Старый 08.04.2012, 17:59
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

Сообщение от kilogram Посмотреть сообщение
Доступ к внутреннему массиву в циклве фор, мы полчаем через индекс массива?
ну естественно, без индекса предыдущего значения невозможно получить внутренние

смысл в этом:
сначала берем $chars[i=0] — смотрим, что у него внутри
натыкаемся на $chars[i=0][j=0] — смотрим также, что там у него есть
и обращаемся уже к $chars[i=0][j=0][k=0]; $chars[i=0][j=0][k=1] ... и т.д.
как закончились k, берем $chars[i=0][j=1] и в нем опять смотрим, что есть... как закончились j, берем $chars[i=1] и начинаем всё заново, пока у нас есть индексы )
__________________
С моих слов записано верно.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массивы; Функция в виде аргумента (Sandr) Общие вопросы Javascript 10 22.02.2012 00:37
Какие массивы бывают в Жабе thunder2 Общие вопросы Javascript 2 26.10.2011 23:28
Двумерные массивы romantik2011 Серверные языки и технологии 2 08.08.2011 13:57
Json и вложенные массивы ArmagedDance jQuery 6 08.06.2011 12:42
JavaScript PHP MySQL массивы Володя Общие вопросы Javascript 4 13.02.2011 22:55