Попробовал вывести массив: Код (Text): 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] ?
Для того, чтобы функция count знала, что считать. Добавлено спустя 2 минуты 38 секунд 112 миллисекунд: А вообще, рекомендую делать так: Код (Text): for ($i = 0, $c1=count($chars); $i <$c1; $i++) for ($j = 0, $c2=count($chars[$i]); $j <$c2; $j++) for ($k = 0, $c3=count($chars[$i][$j]); $k <$c3; $k++) echo $chars[$i][$j][$k].' '; Первое выражение в цикле фор считается только один раз - в начале цикла. Второе - считается на каждой итерации.
Потому что функция count по умолчанию не считает количество элементов во вложенных массивах. Фактически, твой массив $chars - это одномерный массив с индексами от 0 до $i-1, элементами которого являются так-же массивы. Чтобы посчитать количество элементов в этих массивах, надо в функцию count их передать count($chars[$i]). Добавлено спустя 9 минут 24 секунды 15 миллисекунд: Вот твой массив $chars: Когда ты вызываешь функцию count($chars) - она считает количество элементов массива (как видно на схемке, count($chars)=5). Когда вызываешь функцию, скажем так count($chars[2]) - она считает количество элементов во "внутреннем массиве" (count($chars[2])=4). Ну и соответственно, если ты вызовешь функцию так count($chars[2][2]) - она посчитает количество уже на последнем уровне. Ну а для того, чтобы посчитать ВСЕ элементы массива - можно написать так count($chars, 1) или так count($chars, COUNT_RECURSIVE)
Это вроде ясно, не понятно почему вот эти скобки дописывать нужно во втором и третем форе. Понятно, чтоб пробраться во внутренний массив, не могу понять почему эти скобки добавлять с [$i] и в третем цикле [$i][$j]
$a - обычная переменная (sting, array, bool... все что угодно) $a2[] - одномерный массив $a3[][] - двумерный массив $a4[][][] - трехмерный массив Квадратные скобки используются в php чтобы указать индекс массива. Если используется больше одной пары квадратных скобок - массив многомерный. В c++ так-же используется больше одной пары квадратных скобок для указания индексов многомерных массивов - a[j] В Pascal/Delphi все индексы многомерных массивов указываются в одной паре квадратных скобок - a[i, j] Ну а в Бейсике используются круглые скобки, и опять-же одной пары скобок вполне хватает - A(i ,j) Ну а в диалектах ECMAScript, например ActionScript (Не знаю, как там в JS, но в AS - точно), вообще невозможно указать многомерный массив в явном виде. Хотя, если запихнешь один массив в другой - в ECMAScript обращение к элементам массивов тоже идет со множеством квадратных скобок. Как указывать многомерные массивы в ассемблере - не знаю. Не сталкивался ни с ассемблером, ни тем более с многомерными массивами в ассемблере. Есть подозрение, что в нем вообще нет массивов.
Для того что бы получить значение этого масива пишется его ключ? Другими словами пишется переменная счетчика в квадратных скобках и чем больше многомерный массив тем больше квадратных скобок с разн. назв. переменных счетчика?
Нет. "Больше" не влияет на количество скобок. Влияет размерность массива. Скобки указывают размерность. У одномерных массивов - [x], у двумерных - [x][y], у трехмерных - [x][y][z]. Чтобы лучше представить себе, что такое трехмерный массив, можешь представить такую-себе систему координат, например: $A[$B][$C][$D]. Где $B, $C и $D - координаты на осях x, y и z соответственно (индексы массива). А само значение массива - это скажем цвет этой точки A. На картинке $A[$B][$C][$D]="black", а соответственно все остальные точки, например $A[$B-1][$C+5][$D]="white" в php, помему, нельзя в качестве индексов массива использовать выражения и другие массивы Ну а двумерный массив можно представить в виде обыкновенной таблицы, где $a[$x][$y], $x - номер столбика, $y - номер строки, а $a[$x][$y] - содержит значение из столбика $x и строки $y. Прям как в Екселе.
Пишутся квадратные скобки во втором, третем форе и дальше - это означает что мы получаем доступ к вложенному массиву через его счетчик?
Смотри. Вот твой $string когда мы вызываем функцию count($string), эта функция считает количество столбиков. Чтобы посчитать количество строчек в нужном нам столбике, надо обратиться к этому столбику, например в столбике D count($string[D])=11 строк. Ну а чтобы посчитать количество элементов в нужном столбике и нужной строке, например D3 - count($string[D][3]) - получаем 6 элементов.
Ну потому, что вы разглаживаете и каждый раз разложенное опять разлаживаете. Бывает, что можно пойти и другим путем. Код (PHP): $a='1,2,3,4;5,6,7,8||1,2,3,4;5,6,7,8'; $e=explode('||',$a); for($i=0;$i<sizeof($e);$i++) { $s=explode(';',$e[$i]); for($l=0;$l<sizeof($s);$l++) { $d=explode(',',$s[$l]); echo'<br />'; for($t=0;$t<sizeof($d);$t++) { echo$d[$t].'<br />'; } } } Правдо это немного другое. И вообще как пример. Не более!
Доступ к любому элементу массива, в том числе и если он является другим (вложенным) массивом - может быть осуществлён через индекс массива. Также есть такая конструкция, как foreach и функции типа current, next, each с помощью которых можно осуществлять навигацию по массиву не зная его индексов.
Вот это я хотел и уточнить, спс. А название переменных счетчиков во вложенных форах, [$i] или 3-ий фор [$i][$j] - это один из идексов доуступа к этим внутренним массивам з каждой итерацией?
слух. ты уже вкури тему. $a - массив. $a[x] - обращение к члену x массива $a $a[x][y] - обращение к члену y массива x массива $a по русски: берем массив, просим его член. Вот так прямо. А в его члене есть еще один член. Если есть. Бывает, что в члене нет члена, то тогда это не член Чужого, а обычный член. И будет ворнинг. Но если в члене есть другие члены, то радость - будет все зашибись. а что ты там делаешь с титькерациями или без титькераций, то это уже твое дело. Ты в любой момент можешь обратиться к любому массиву и даже не массиву, но все равно обратиться как к массиву, и к существующему члену или даже к несуществующему члену, и что-нибудь из этого выйдет. И имей в виду, используя цикл for ты еще можешь кучу раз наобращаться к тем членам, которых нет. Пхп не перебивает заново индексы, если ты похерил один из членов в середине. Если один из членов вырезали, то на это месте будет дырка. И ты вроде как хотел обратиться к члену, а обратился к дырке. И будет ворнинг. Посему юзай foreach.