За последние 24 часа нас посетил 57851 программист и 1846 роботов. Сейчас ищут 1395 программистов ...

Вывод всех символово ASII

Тема в разделе "PHP для новичков", создана пользователем kilogram, 7 апр 2012.

  1. kilogram

    kilogram Активный пользователь

    С нами с:
    19 мар 2012
    Сообщения:
    116
    Симпатии:
    0
    Код (Text):
    1. <html><body>
    2.  
    3. <?php ## Печать всей таблицы ASCII-символов.
    4. // Сначала создаем массив того, что мы собираемся выводить,
    5. // не заботясь о форматировании (дизайне) информации
    6. for ($i=0,$x=0; $x<16; $x++) {
    7.   for ($y=0; $y<16; $y++) {
    8.     $chars[$x][$y] = array($i, chr($i));
    9.     $i++;
    10.   }
    11. }
    12. // Теперь выводим накопленную информацию, используя идеологию
    13. // вставки участков кода в HTML-документ
    14. ?>
    15. <table  border=1 cellpadding=3 cellspacing=0>
    16. <? foreach ($chars as $row) {?>
    17.   <tr>
    18.   <? foreach ($row as $cell) { ?>
    19.     <td>
    20.       <?=$cell[0]?>:   
    21.       <b><tt><?=$cell[1]?></tt></b>
    22.     </td>
    23.   <? }?>
    24.   </tr>
    25. <? }?>
    26. </table>
    27.  
    28. </body></html>
    Как работает вывод двумерного ассоциативного массива в этом коде?
    $chars[$x][$y] = array($i, chr($i)); - здесь каждому элементу созданного массива $chars присваиватся значение результата анонимного вызова массива array без имени?
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    $chars - это массив, каждый элемент которого (все значения $x) - является также массивами, содержащие элементы $y. И эти элементы $y - тоже являются массивами, содержащими по 2 значения ($i и chr($i)). $chars - трёхмерный массив.
     
  3. kilogram

    kilogram Активный пользователь

    С нами с:
    19 мар 2012
    Сообщения:
    116
    Симпатии:
    0
    $chars[$x][$y] = array($i, chr($i));

    array($i, chr($i)); - это значения с вызова анонимного массива присваиваются массиву $chars?
    Разве здесь трехмерный массив?
     
  4. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    array() - это конструкция языка. Она создаёт новый массив и возвращает его вызвавшей инструкции. Подробнее здесь: http://www.php.ru/manual/function.array.html

    $chars - это массив, состоящий из $x элементов.
    Каждый $chars[$x] - это массив, состоящий из $y элементов.
    Каждый $chars[$x][$y] - это массив состоящий из 2-х элементов.

    Структура твоего массива примерно такая получается:
    Код (PHP):
    1. $chars = array(
    2.     1 => array(
    3.         1 => array(
    4.             $i,
    5.             chr($i)
    6.         ),
    7.         2 => array(
    8.             $i,
    9.             chr($i)
    10.         ),
    11.         // ...
    12.     ),
    13.     2 => array(
    14.         1 => array(
    15.             $i,
    16.             chr($i)
    17.         ),
    18.         2 => array(
    19.             $i,
    20.             chr($i)
    21.         ),
    22.         // ...
    23.     ),
    24.     // ...
    25. ); 
    Возьми книжку по PHP, открой главу про массивы и прочитай от предисловия до упражнений для закрепления пройденного материала (включительно).
     
  5. kilogram

    kilogram Активный пользователь

    С нами с:
    19 мар 2012
    Сообщения:
    116
    Симпатии:
    0
    Прочитал про массивы, меня просто смутило что без названия присваивается правая часть левой в этом месте.
    Код (Text):
    1. $chars[$x][$y] = array($i, chr($i));
    Если возьмем первую итерацию в этом цикле, получается первому элементу под номером
    $chars[0][0] присваивается ещё один массив(в котором внутри 2 элемента с их значеними)?
    Каким образом получается трехмерный в данном случае?
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    $chars[0][0][0] - чтобы получить $i для x=0 и y=0
    $chars[0][0][1] - чтобы получить chr($i) для x=0 и y=0
     
  7. kilogram

    kilogram Активный пользователь

    С нами с:
    19 мар 2012
    Сообщения:
    116
    Симпатии:
    0
    Попробовал написать так:
    Код (Text):
    1. for ($i=0,$x=0; $x<1; $x++) {
    2.   for ($y=0; $y<1; $y++) {
    3.     $chars[$x][$y] = array($i, chr($i));
    4.     var_dump($chars);
    5.     $i++;
    6.   }
    7. }
    Вывелось такое:
    Код (Text):
    1. array(
    2. 0=> array(
    3.  0=> array(
    4. 0=> int(0)
    5. 1=> string(1) ""
    6.  )
    7.  )
    8. )
    Код (Text):
    1.  
    2. Получается массив с одного элемента, который содержит ещё один массив, который также состоит с одного элемента, а этот элемент содержит ещё один массив который состоит из двух элементов?
     
  8. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    На первой итерации - да. Дальше количество элементов как самого массива $chars, так и каждого $chars[0], $chars[1], ... - будет расти
     
  9. kilogram

    kilogram Активный пользователь

    С нами с:
    19 мар 2012
    Сообщения:
    116
    Симпатии:
    0
    То оесть после присвоения первому элементу массива $chars[0][0] ----> массива array($i, chr($i)); после этого этот двумерный прверащается в трехмерный и все остальные итерации уже идут с трехмерным, хотя первая итерация была с двумерным?
     
  10. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    kilogram, а ты пробовал читать книгу?
     
  11. kilogram

    kilogram Активный пользователь

    С нами с:
    19 мар 2012
    Сообщения:
    116
    Симпатии:
    0
    Так я сейчас и читаю книгу, разбираю один из примеров в этой книге.
     
  12. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Обычно в книгах все описывается как что работает, дают пример и его подробно объясняют...

    А что ты читаешь?
    И еще вопрос, так для интереса, это твой первый язык?
     
  13. kilogram

    kilogram Активный пользователь

    С нами с:
    19 мар 2012
    Сообщения:
    116
    Симпатии:
    0
    Читаю Котова, ПХП5, немного читал раньше С++ и Яву, ну так в ознакомительных целях его использовал. И все же, ответьте на мой вопрос.
     
  14. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Я правда не читал Котова, но думаю там есть ответ на твой вопрос...

    После присвоения выполни print_r($chars); и посмотри... и ты сам все увидишь :)

    И так информация к размышлению... попробуй дочитать книгу до конца, если что-то не понятно перечитай если все равно не понятно прочитай в другой книге, так все делают...

    Не надо зацикливаться на 1 книге