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
Форумы портала PHP.SU :: Версия для печати :: Раздел " Уроки PHP (по материалам форума PHP.SU)"
Форумы портала PHP.SU » » Вопросы новичков » Раздел " Уроки PHP (по материалам форума PHP.SU)"

Страниц (12): [1] 2 3 4 5 6 7 8 9 ... » В конец
 

1. Mefistofel - 29 Апреля, 2012 - 20:48:57 - перейти к сообщению
Начал проходить уроки, решил, что вопросы будут появляться регулярно. По мере прохождения уроков будут возникать вопросы... Надеюсь, что поможете понять.
Итак, Урок №1.

Пример из урока:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. // Выведет: Это не вставит: \n новую строку
  4. echo 'Это не вставит: \n новую строку';
  5. // В операционных системах используются особые специальные символы в тексте
  6. // которые помогают системе понять, где находится конец строки и начинается новая,
  7. // где находится табуляция и где вообще заканчивается весь текст.
  8. // [color=yellow]Символ \n обозначает конец строки и переход на новую[/color].
  9. // Слэш является частью символа, а не экранированием.
  10. // Если бы php всё таки вставил этот символ, то мы бы получили вывод в две строки:
  11. // Это не вставит:
  12. // новую строку
  13.  
  14. ?>


Вот сам вопрос: если символ (во, блин!!! Я обнаружил, что у меня на клаве нет символа обратного слэша!!!) \n означает конец строки, то почему он не исполняется? Потому что в первую очередь строка ограничена символами '.....' ? То есть, если бы символ \n стоял так:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. echo 'Это вставит:  новую строку' \n;
  4.  
  5. ?>


то конец строки будет прочтен??? Как этот символ используется? Можно пример?
2. Okula - 29 Апреля, 2012 - 20:57:37 - перейти к сообщению
Mefistofel пишет:
Я обнаружил, что у меня на клаве нет символа обратного слэша!!!)

Это ты пошутил Радость обратный слеш - соседняя кнопка с левым Shift или соседняя сверху рядом с правым Shift.
Символ \n это символ перевода строки. Вместо написания этого символа можно использовать предопределённую константу PHP_EOL.
Работа этого символа исходит из его названия - переводиткурсор на новую строку.
Mefistofel пишет:
echo 'Это вставит: новую строку' \n;

Возникнет ошибка синтаксиса, так как для соединения строк используется символ точка "."
Для того чтобы самостоятельно прописать данный спецсимвол достаточно обрамить его в двойные ковычки.
PHP:
скопировать код в буфер обмена
  1. echo 'Это вставит:  новую строку'."\n";

Либо как я уже говорил использовать константу PHP_EOL
PHP:
скопировать код в буфер обмена
  1. echo 'Это вставит:  новую строку'.PHP_EOL;
3. Bio man - 29 Апреля, 2012 - 20:59:27 - перейти к сообщению
Mefistofel пишет:
во, блин!!! Я обнаружил, что у меня на клаве нет символа обратного слэша!!!
Не может быть такого. Ищи в правой части клавы. На 1 клаве у меня он справа от правого шыфта на другой клаве над шифтом.

Одинарные кавычки в РНР отличаются от двойных тем, что в них все воспринимается как текст. И \n будет расценен как просто 2 символа.
Mefistofel пишет:
PHP:
скопировать код в буфер обмена
  1. echo 'Это вставит:  новую строку' \n;
Не верно. Вызовет критическую ошибку. Что бы вставит перенос строки нужно писать его в двойных кавычках
PHP:
скопировать код в буфер обмена
  1. echo "Это вставит: \n новую строку";
Но вообще рекоммендуется использовать константу PHP_EOL
PHP:
скопировать код в буфер обмена
  1. echo 'Это вставит:'. PHP_EOL .'новую строку';
4. Mefistofel - 29 Апреля, 2012 - 21:22:55 - перейти к сообщению
Okula пишет:
Это ты пошутил обратный слеш - соседняя кнопка с левым Shift или соседняя сверху рядом с правым Shift.

Bio man пишет:
Не может быть такого. Ищи в правой части клавы. На 1 клаве у меня он справа от правого шыфта на другой клаве над шифтом.


Разрози меня горм!!! нету! А?! netbook made in NovosibirskPodval... Закатив глазки

Okula пишет:
Символ \n это символ перевода строки.

Перевода откуда куда? Например, чтобы разделить текст на 2 строки под одной командой echo?

Тогда, получается, если мне нужно вывести текст "блабла бла блалалалала" в виде

_____________

блабла бла
блалалалала
_____________

я должен прописать так:


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. echo 'блабла бла."\n".блалалалала';
  3.  
  4. ?>

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

Okula пишет:
Для того чтобы самостоятельно прописать данный спецсимвол достаточно обрамить его в двойные ковычки.
PHP:
скопировать код в буфер обмена

echo 'Это вставит: новую строку'."\n";



Как я увижу эту строку? Разницу я вижу только в том, что \n либо отображается в браузере, либо нет... Какой смысл в нем - не пойму...
PHP:
скопировать код в буфер обмена
  1. echo 'Это вставит:  новую строку'."\n";
  2.  


что при

PHP:
скопировать код в буфер обмена
  1. echo 'Это вставит: \n новую строку';


Простите за непонятливость.
5. re_nat - 29 Апреля, 2012 - 21:29:11 - перейти к сообщению
а ты случаем не под виндой кодишь? Улыбка
Если да, то там нужно использовать еще и символ перевода каретки '\r'.
В твоем случае $string1."\r\n".$string2
6. LIME - 29 Апреля, 2012 - 21:31:33 - перейти к сообщению
дааа)) видимо тут придется потрудиться))
фиг с ним с слешем (хотя у меня на ноте(тошиба) в англ раскладке выше ентера)
в двойных кавычках строка интерпретируется, то есть переменные и управляющие символы заменяются
в одинарных все выводится буквально
например
PHP:
скопировать код в буфер обмена
  1. $var='переменная';
  2. echo "выводим слово $var и потом переводим строку \n перевели";
  3. echo 'выводим слово $var и потом переводим строку \n перевели';
обратите внимание как по разному выделяются переменные в строках
ну и само собой есть разница в выводе
7. Bio man - 29 Апреля, 2012 - 22:19:51 - перейти к сообщению
LIME пишет:
дааа)) видимо тут придется потрудиться))
Приступим к краткой текстовой лекции.

Перенос строки - как видно из названия этот символ для перевода строки на новую строку, то есть перемещает курсор (указатель) на строку ниже.
Мне известны 3 вида переноса строк:
0. Для окон - \r\n
1. Для пингвина - \n
3. Для ... мака - \r

Но, что бы сделать перевод строки универсальным в РНР существует предопределенная константа - PHP_EOL.

Но почему же при переносе строки в браузере ничего не происходит? Ответ очевиден - браузер игнорирует частые пробельные символы ("частые" в данном случае множество пробелов друг за другом, переносов строк и табуляции) и пробельные символы такие как переносы строк и табуляция - он их игнорирует в любом случае.

Для визуального переноса строки существует тег <br />

Но для чего же нужен этот перенос строки?
Если вы знаете, что такое форматирование текста то следующее предложение с примерами можете не читать.
Форматирование текста - оформление текста для удобной читаемости.
Пример отформатированного текста
PHP:
скопировать код в буфер обмена
  1. if($bVar){
  2.     $sWords = 'bla bla bla';
  3.     $rgWords = explode(' ', $sWords);
  4.     foreach($rgWords as $sWord)
  5.         echo $sWord."<br />\n";
  6. }else
  7.     echo '$bVar is false';

Пример не отформатированного текста
PHP:
скопировать код в буфер обмена
  1. if($bVar){$sWords = 'bla bla bla';$rgWords = explode(' ', $sWords);foreach($rgWords as $sWord)echo $sWord."<br />";}else echo '$bVar is false';

Как видно в примере №1 используются переносы строк и табуляция.
Но перенос строки существует не для вывода в браузер. Для этого случая есть тег <br />
Так для чего же это надо?
0. Для записи текста в файл. Представим простенькую ситуацию - есть динамически генерируемый файл, который нужно занести в массив построчно ф-цией file(). Если текст не отформатирован переносами строк то в массиве будет всего 1 значение и это будет весь текст. То же самое в текстовых процессорах (в простолюдии редакторах) каждая строка содержит невидимый символ в конце - это и есть перенос.
1. Для оформления вывода в браузере. Если вы посмотрите исходный код страницы в браузере то будут видны все переносы.
2. Для заголовков, но это тема отдельная.

Ну вот, в общих чертах Улыбка
8. Okula - 29 Апреля, 2012 - 22:53:03 - перейти к сообщению
Mefistofel пишет:
Как я увижу эту строку? Разницу я вижу только в том, что \n либо отображается в браузере, либо нет... Какой смысл в нем - не пойму...

Перенос строки будет видно если нажать в браузере "Исходный код страницы".
Он переносит текст на новую строку в исходных данных, а не что ты видешь на экране монитора. Для переноса текста на новую строку в html файле существует html тег <br />
Применяя его можно наблюдать пернос строки не в исходных данных, а на обрабатываемой браузером странице.

P.S. PHP - это язык програмирования, а не язык разметки. Все задача решаемые с помощью него - это работа с исходным кодом файлов и с самимы файлами, а никак не с их представлением в браузере.
Что-то мне подсказывает что рано тебе ещё учить языки программирования, нужно с разметкой для начала разобраться.
9. Саныч - 30 Апреля, 2012 - 01:48:31 - перейти к сообщению

На форуме завелся еще один данила Улыбка Чувствую скоро мы увидим еще один "портал Буденовска", ну в нашем случае Новосибирска Улыбка
10. Mefistofel - 30 Апреля, 2012 - 16:42:25 - перейти к сообщению
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 пишет:
Что-то мне подсказывает что рано тебе ещё учить языки программирования, нужно с разметкой для начала разобраться.


Возможно... Буду пытаться делать это параллельно, но не торопясь.

Саныч пишет:
На форуме завелся еще один данила Чувствую скоро мы увидим еще один "портал Буденовска", ну в нашем случае Новосибирска


Можно мне узнать кто такой Данила и чем он отличился?) Если этот некий гуру был абсолютным нулем, когда пришел на форум и достал всех элементарными вопросами - пожайлуй, у нас с ним много общего=) Только вот писать я ничего не собираюсь.
Ай-яй-яй) Не ехидничайте)
11. Okula - 30 Апреля, 2012 - 16:54:48 - перейти к сообщению
Mefistofel, Данила - местный клоун. Задавал тупые вопросы и просил чтоб за него всё написали, а ещё грозился всех задосить Радость
12. avtor.fox - 30 Апреля, 2012 - 16:55:18 - перейти к сообщению
Mefistofel пишет:
Возможно... Буду пытаться делать это параллельно, но не торопясь.

Моск взорвёте.
Mefistofel пишет:
Что такое пингвин?

Linux
Mefistofel пишет:
Только вот где и для чего использовать эту функцию - не догадываюсь даже.

Элементарная работа с файлами или вывод алерта в js.
Mefistofel пишет:
Поискал сегодня свежим взглядом - нету!!)))

Враки. Фото клавы в студию Ха-ха
Mefistofel пишет:
кто такой Данила

Есть тут один кодер хай лвла Улыбка
13. armancho7777777 - 30 Апреля, 2012 - 16:57:24 - перейти к сообщению
Саныч пишет:

На форуме завелся еще один данила Улыбка Чувствую скоро мы увидим еще один "портал Буденовска", ну в нашем случае Новосибирска Улыбка

Радость
Что-то не видать его давно ))
14. Mefistofel - 30 Апреля, 2012 - 16:58:38 - перейти к сообщению
Okula пишет:
Данила - местный клоун

Я никому не нужен я просто хочу научиться, ничего за меня писать не нужно, досить тем более не собираюсь. У меня и мозга не хватит на это. Хм

avtor.fox пишет:
Враки. Фото клавы в студию


Ок, завтра до обеда скину)

avtor.fox пишет:
Есть тут один кодер хай лвла


Уже понял) У нас мало чего общего.))
(Добавление)
----------Массив ( Array )-----------

Уже созрел следующий вопрос по этому примеру из урока:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $array = Array('Сыр','Колбаса'); // Определяем массив с двумя строками
  4. echo $array[0]; // Обращение к нулевому элементу. Выведет Сыр.
  5. $array[1] = 'Мороженое'; // Присвоение первому элементу. заменяем колбасу на молоко
  6. echo $array[1]; // Выведет Мороженое.
  7.  
  8. ?>


Здест прописаны строки массива "сыр" и "колбаса". По умолчанию сыр - [0], а колбаса - [1]. Так? Если принудительно присваиваем строке [1] имя "мороженое", то как мне вывести "Колбаса", например, следующей строчкой, если ее место ([1]) занято мороженым? Мне нужно дополнительно прописать и присвоить строке [2] (или любой другой, которая больше, чем [1]) имя "колбаса", то есть сделав так:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. $array = Array('Сыр','Колбаса'); // Определяем массив с двумя строками
  4. echo $array[0]; // Обращение к нулевому элементу. Выведет Сыр.
  5. $array[1] = 'Мороженое'; // Присвоение первому элементу. заменяем колбасу на молоко
  6. echo $array[1]; // Выведет Мороженое.
  7.  
  8. $array[2] = 'колбаса'
  9.  
  10. ?>


Этот вариант работает - я проверил. Но только не пойму, как можно присваивать номер строки массива, если изначально их всего 2 ($array = Array('Сыр','Колбаса'); )
15. Саныч - 30 Апреля, 2012 - 17:43:00 - перейти к сообщению
Mefistofel, представьте, что массив это полка, а элементы массива - подписанные папки на ней. Чтобы поставить новую папку на полку, вам нужно ее как-то "обозвать". То же самое и с массивом, чтобы добавить новый элемент вы указываете его название (правильно - ключ) и значение этого элемента. В вашем случае ключи это и есть вот те цифры 0, 1, 2 и т.д. Вместо цифр могут быть еще строки, но видимо до ассоциативных массивов вы пока не дошли. Устанавливать ключ, кстати, не обязательно. Т.е. для добавления нового значения вы можете просто указать $array[] = 'колбаса' В этом случае интерпретатор все сделает за вас и сам присвоит этому элементу порядковый номер в массиве.
Ну вот как-то так. Улыбка
А вобще вам нужно сюда - http://ua.php.net/manual/ru/langref.php

з.ы. про данилку не обежайтесь, просто в его случае все тоже начиналось примерно с вот таких вопросов.

Mefistofel пишет:
Что-то не видать его давно ))
Наверное на другой форум иммигрировал Улыбка

 

Powered by ExBB FM 1.0 RC1