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 (по материалам форума PHP.SU)"
Покинул форум
Сообщений всего: 172
Дата рег-ции: Апр. 2012 Откуда: Россия
Помог: 0 раз(а)
Начал проходить уроки, решил, что вопросы будут появляться регулярно. По мере прохождения уроков будут возникать вопросы... Надеюсь, что поможете понять.
Итак, Урок №1.
// В операционных системах используются особые специальные символы в тексте
// которые помогают системе понять, где находится конец строки и начинается новая,
// где находится табуляция и где вообще заканчивается весь текст.
// [color=yellow]Символ \n обозначает конец строки и переход на новую[/color].
// Слэш является частью символа, а не экранированием.
// Если бы php всё таки вставил этот символ, то мы бы получили вывод в две строки:
// Это не вставит:
// новую строку
?>
Вот сам вопрос: если символ (во, блин!!! Я обнаружил, что у меня на клаве нет символа обратного слэша!!!) \n означает конец строки, то почему он не исполняется? Потому что в первую очередь строка ограничена символами '.....' ? То есть, если бы символ \n стоял так:
то конец строки будет прочтен??? Как этот символ используется? Можно пример?
----- Чем короче и понятней код, тем ты нужнее народу
Okula
Отправлено: 29 Апреля, 2012 - 20:57:37
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Mefistofel пишет:
Я обнаружил, что у меня на клаве нет символа обратного слэша!!!)
Это ты пошутил обратный слеш - соседняя кнопка с левым Shift или соседняя сверху рядом с правым Shift.
Символ \n это символ перевода строки. Вместо написания этого символа можно использовать предопределённую константу PHP_EOL.
Работа этого символа исходит из его названия - переводиткурсор на новую строку.
Mefistofel пишет:
echo 'Это вставит: новую строку' \n;
Возникнет ошибка синтаксиса, так как для соединения строк используется символ точка "."
Для того чтобы самостоятельно прописать данный спецсимвол достаточно обрамить его в двойные ковычки.
???
Попробовал подгрузить скрипт - выдал одной строкой несмотря на то, что склеил знаком "." и заключил в двойные кавычки. Или просто смысл "перевода строки" имеет иное значение, нежели зазбивка текста на строки?
Okula пишет:
Для того чтобы самостоятельно прописать данный спецсимвол достаточно обрамить его в двойные ковычки.
PHP:
скопировать код в буфер обмена
echo 'Это вставит: новую строку'."\n";
Как я увижу эту строку? Разницу я вижу только в том, что \n либо отображается в браузере, либо нет... Какой смысл в нем - не пойму...
----- Чем короче и понятней код, тем ты нужнее народу
re_nat
Отправлено: 29 Апреля, 2012 - 21:29:11
Частый гость
Покинул форум
Сообщений всего: 198
Дата рег-ции: Март 2012
Помог: 5 раз(а)
а ты случаем не под виндой кодишь?
Если да, то там нужно использовать еще и символ перевода каретки '\r'.
В твоем случае $string1."\r\n".$string2
LIME
Отправлено: 29 Апреля, 2012 - 21:31:33
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
дааа)) видимо тут придется потрудиться))
фиг с ним с слешем (хотя у меня на ноте(тошиба) в англ раскладке выше ентера)
в двойных кавычках строка интерпретируется, то есть переменные и управляющие символы заменяются
в одинарных все выводится буквально
например
echo"выводим слово $var и потом переводим строку \n перевели";
echo'выводим слово $var и потом переводим строку \n перевели';
обратите внимание как по разному выделяются переменные в строках
ну и само собой есть разница в выводе
Bio man
Отправлено: 29 Апреля, 2012 - 22:19:51
Постоянный участник
Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010 Откуда: Даугавпилс, Латвия
Помог: 52 раз(а)
LIME пишет:
дааа)) видимо тут придется потрудиться))
Приступим к краткой текстовой лекции.
Перенос строки - как видно из названия этот символ для перевода строки на новую строку, то есть перемещает курсор (указатель) на строку ниже.
Мне известны 3 вида переноса строк:
0. Для окон - \r\n
1. Для пингвина - \n
3. Для ... мака - \r
Но, что бы сделать перевод строки универсальным в РНР существует предопределенная константа - PHP_EOL.
Но почему же при переносе строки в браузере ничего не происходит? Ответ очевиден - браузер игнорирует частые пробельные символы ("частые" в данном случае множество пробелов друг за другом, переносов строк и табуляции) и пробельные символы такие как переносы строк и табуляция - он их игнорирует в любом случае.
Для визуального переноса строки существует тег <br />
Но для чего же нужен этот перенос строки?
Если вы знаете, что такое форматирование текста то следующее предложение с примерами можете не читать.
Форматирование текста - оформление текста для удобной читаемости.
Пример отформатированного текста
if($bVar){$sWords='bla bla bla';$rgWords=explode(' ',$sWords);foreach($rgWordsas$sWord)echo$sWord."<br />";}elseecho'$bVar is false';
Как видно в примере №1 используются переносы строк и табуляция.
Но перенос строки существует не для вывода в браузер. Для этого случая есть тег <br />
Так для чего же это надо?
0. Для записи текста в файл. Представим простенькую ситуацию - есть динамически генерируемый файл, который нужно занести в массив построчно ф-цией file(). Если текст не отформатирован переносами строк то в массиве будет всего 1 значение и это будет весь текст. То же самое в текстовых процессорах (в простолюдии редакторах) каждая строка содержит невидимый символ в конце - это и есть перенос.
1. Для оформления вывода в браузере. Если вы посмотрите исходный код страницы в браузере то будут видны все переносы.
2. Для заголовков, но это тема отдельная.
Ну вот, в общих чертах
Okula
Отправлено: 29 Апреля, 2012 - 22:53:03
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Mefistofel пишет:
Как я увижу эту строку? Разницу я вижу только в том, что \n либо отображается в браузере, либо нет... Какой смысл в нем - не пойму...
Перенос строки будет видно если нажать в браузере "Исходный код страницы".
Он переносит текст на новую строку в исходных данных, а не что ты видешь на экране монитора. Для переноса текста на новую строку в html файле существует html тег <br />
Применяя его можно наблюдать пернос строки не в исходных данных, а на обрабатываемой браузером странице.
P.S. PHP - это язык програмирования, а не язык разметки. Все задача решаемые с помощью него - это работа с исходным кодом файлов и с самимы файлами, а никак не с их представлением в браузере.
Что-то мне подсказывает что рано тебе ещё учить языки программирования, нужно с разметкой для начала разобраться.
Саныч
Отправлено: 30 Апреля, 2012 - 01:48:31
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
На форуме завелся еще один данила Чувствую скоро мы увидим еще один "портал Буденовска", ну в нашем случае Новосибирска
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
Mefistofel
Отправлено: 30 Апреля, 2012 - 16:42:25
Частый гость
Покинул форум
Сообщений всего: 172
Дата рег-ции: Апр. 2012 Откуда: Россия
Помог: 0 раз(а)
re_nat пишет:
а ты случаем не под виндой кодишь?
Под ней, родимой.
LIME пишет:
фиг с ним с слешем
Поискал сегодня свежим взглядом - нету!!)))
LIME пишет:
например
PHP:
скопировать код в буфер обмена
$var='переменная';
echo "выводим слово $var и потом переводим строку \n перевели";
echo 'выводим слово $var и потом переводим строку \n перевели';
Аллилуйя!!! Мой мозг теперь понял!)) Детская нежная и ранимая психика осталась нетронута жестоким разочарованием... Спасибо)
Я просто наконец-то понял, что перевод строки я вижу только в исходном коде загруженой в браузере страницы, а не в самом браузере... Только вот где и для чего использовать эту функцию - не догадываюсь даже.
Bio man пишет:
0. Для окон - \r\n
1. Для пингвина - \n
У меня винда, значит \r\n . Но у меня одинаково сработали как \n , так и \r\n. Что такое пингвин?)))
Bio man пишет:
Для визуального переноса строки существует тег <br />
Вот, собственно то, с чем я путал \n
Bio man пишет:
Ну вот, в общих чертах
Премного благодарен!=))) Все очень понятно.
Okula пишет:
Перенос строки будет видно если нажать в браузере "Исходный код страницы".
Усвоил, проверил - понял
Okula пишет:
Что-то мне подсказывает что рано тебе ещё учить языки программирования, нужно с разметкой для начала разобраться.
Возможно... Буду пытаться делать это параллельно, но не торопясь.
Саныч пишет:
На форуме завелся еще один данила Чувствую скоро мы увидим еще один "портал Буденовска", ну в нашем случае Новосибирска
Можно мне узнать кто такой Данила и чем он отличился?) Если этот некий гуру был абсолютным нулем, когда пришел на форум и достал всех элементарными вопросами - пожайлуй, у нас с ним много общего=) Только вот писать я ничего не собираюсь.
Ай-яй-яй) Не ехидничайте)
----- Чем короче и понятней код, тем ты нужнее народу
Okula
Отправлено: 30 Апреля, 2012 - 16:54:48
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Mefistofel, Данила - местный клоун. Задавал тупые вопросы и просил чтоб за него всё написали, а ещё грозился всех задосить
avtor.fox
Отправлено: 30 Апреля, 2012 - 16:55:18
Постоянный участник
Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012 Откуда: Воронеж
Помог: 50 раз(а)
Mefistofel пишет:
Возможно... Буду пытаться делать это параллельно, но не торопясь.
Моск взорвёте.
Mefistofel пишет:
Что такое пингвин?
Linux
Mefistofel пишет:
Только вот где и для чего использовать эту функцию - не догадываюсь даже.
Элементарная работа с файлами или вывод алерта в js.
Mefistofel пишет:
Поискал сегодня свежим взглядом - нету!!)))
Враки. Фото клавы в студию
Mefistofel пишет:
кто такой Данила
Есть тут один кодер хай лвла
armancho7777777
Отправлено: 30 Апреля, 2012 - 16:57:24
Активный участник
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011 Откуда: Москва
Помог: 221 раз(а)
Саныч пишет:
На форуме завелся еще один данила Чувствую скоро мы увидим еще один "портал Буденовска", ну в нашем случае Новосибирска
$array=Array('Сыр','Колбаса');// Определяем массив с двумя строками
echo$array[0];// Обращение к нулевому элементу. Выведет Сыр.
$array[1]='Мороженое';// Присвоение первому элементу. заменяем колбасу на молоко
echo$array[1];// Выведет Мороженое.
?>
Здест прописаны строки массива "сыр" и "колбаса". По умолчанию сыр - [0], а колбаса - [1]. Так? Если принудительно присваиваем строке [1] имя "мороженое", то как мне вывести "Колбаса", например, следующей строчкой, если ее место ([1]) занято мороженым? Мне нужно дополнительно прописать и присвоить строке [2] (или любой другой, которая больше, чем [1]) имя "колбаса", то есть сделав так:
$array=Array('Сыр','Колбаса');// Определяем массив с двумя строками
echo$array[0];// Обращение к нулевому элементу. Выведет Сыр.
$array[1]='Мороженое';// Присвоение первому элементу. заменяем колбасу на молоко
echo$array[1];// Выведет Мороженое.
$array[2]='колбаса'
?>
Этот вариант работает - я проверил. Но только не пойму, как можно присваивать номер строки массива, если изначально их всего 2 ($array = Array('Сыр','Колбаса'); )
----- Чем короче и понятней код, тем ты нужнее народу
Саныч
Отправлено: 30 Апреля, 2012 - 17:43:00
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Mefistofel, представьте, что массив это полка, а элементы массива - подписанные папки на ней. Чтобы поставить новую папку на полку, вам нужно ее как-то "обозвать". То же самое и с массивом, чтобы добавить новый элемент вы указываете его название (правильно - ключ) и значение этого элемента. В вашем случае ключи это и есть вот те цифры 0, 1, 2 и т.д. Вместо цифр могут быть еще строки, но видимо до ассоциативных массивов вы пока не дошли. Устанавливать ключ, кстати, не обязательно. Т.е. для добавления нового значения вы можете просто указать $array[] = 'колбаса' В этом случае интерпретатор все сделает за вас и сам присвоит этому элементу порядковый номер в массиве.
Ну вот как-то так.
А вобще вам нужно сюда - http://ua.php.net/manual/ru/langref.php
з.ы. про данилку не обежайтесь, просто в его случае все тоже начиналось примерно с вот таких вопросов.
Mefistofel пишет:
Что-то не видать его давно ))
Наверное на другой форум иммигрировал
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.