[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Мои вопросы
bugmenot
Здравствуйте уважаемые форумчане wink.gif Недавно я начал учить php и в этой теме я буду задавать свои глупые вопросы smile.gif)

1. Помогите найти ашыпку ф коде:
Код
<html>
<body>
<?php
$name = vasya;
echo "<b>Privet</b>",$name;
?>
</body></html>

Спасиба заранее laugh.gif



Спустя 5 минут, 28 секунд (9.02.2009 - 00:18) jetistyum написал(а):
Ну, ты переменной $name вероятно присваиваешь какую-то несуществующую константу с именем vasya.
Ведь строки в пхп заключаются в кавычки, так что... либо кавычки, либо определение константы smile.gif

Спустя 3 минуты, 40 секунд (9.02.2009 - 00:22) sergeiss написал(а):
Вообще-то, этот вопрос похож на "тест IQ"... Типа, выше он, чем у Джорджа Буша, или ниже blink.gif

Слово vasya в таком написании подразумевает, что это константа, определенная ранее. Но "мой внутренний голос" smile.gif подсказывает, что это не так. Поэтому надо заключить его в кавычки. И ты поймешь, что "счастье есть, оно не может не есть" smile.gif

PS. Опередили с ответом......

Спустя 3 минуты, 16 секунд (9.02.2009 - 00:25) bugmenot написал(а):
jetistyum,sergeiss
пасиб! Жаль на форуме плюсиков нету rolleyes.gif
Если что буду еще спрашивать! smile.gif
PS. Какой редактор посоветуете для написания php кода? Кроме dreamweaver'a wink.gif
PPS. Какую еще литературу посоветуете? Щас учусь по "PHP для чайников" Джанета Валейда (издание Диалектика)

Спустя 8 минут, 22 секунды (9.02.2009 - 00:34) sergeiss написал(а):
Насчет редакторов см. тему прямо рядом тут, только в другом разделе

Спустя 6 часов, 55 минут, 58 секунд (9.02.2009 - 07:30) Семён написал(а):
PHP
$namp = 'vasya';
echo "<b>Привет $namp!</b>";

Спустя 1 час, 12 минут, 55 секунд (9.02.2009 - 08:43) kirik написал(а):
Семён, давайте тогда сразу правильно писать, с конкатенацией (через запятую) и в одинарных кавычках.
PHP
$name = 'vasya';
echo '<b>Privet</b>',$name;


ЗЫ. как правило, конкатенация строк производится быстрее если соединителем является запятая, однако можно использовать и точку.

Спустя 1 час, 23 минуты, 54 секунды (9.02.2009 - 10:07) sergeiss написал(а):
Цитата (kirik @ 9.02.2009 - 08:43)
Семён, давайте тогда сразу правильно писать, с конкатенацией (через запятую) и в одинарных кавычках.
PHP
$name = 'vasya';
echo '<b>Privet</b>',$name;


ЗЫ. как правило, конкатенация строк производится быстрее если соединителем является запятая, однако можно использовать и точку.

А вот отсюда поподробнее, плз...

Откуда данные о скоростях? Да и насколько именно различаются скорости, насколько это существено для конечного пользователя? Если страница сформируется за 0,0001 сек или за 0,01 сек, то никто этого даже не заметит. Хотя разница на 2 порядка.

И почему "правильнее" пользоваться конкатенацией, вместо вставки переменных в текст?
На мой взгляд, вставка в текст улучшает читаемость кода, поэтому я стараюсь пользоваться именно ей. Так что вопрос весьма актальный smile.gif

Спустя 37 минут, 56 секунд (9.02.2009 - 10:44) kirik написал(а):
Цитата (sergeiss @ 9.02.2009 - 02:07)
И почему "правильнее" пользоваться конкатенацией, вместо вставки переменных в текст?

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

Цитата (sergeiss @ 9.02.2009 - 02:07)
Откуда данные о скоростях?

Тесты и тесты smile.gif
Простой скипт -
PHP
$test = 'string';
$ss = microtime(true);
for(
$i = 0; $i < 1000000; $i++)
{
//     sprintf('text ',$test,' text ',$test,' text ',$test); // 1.01 sec
//     sprintf("text ",$test," text ",$test," text ",$test); // 1.10 sec
//     sprintf('text '.$test.' text '.$test.' text '.$test); // 1.33 sec
//     sprintf("text {$test} text {$test} text {$test}"); // 1.35 sec
}
echo round((microtime(true) - $ss), 4).' seconds';

В комментах видно что конкатенация с одинарными кавычками и через запятую выполняется быстрее чем конкатенация с двойными кавычками. А вот конкатенация через точку, или без нее - неплохо тормозят программу.

На конечном пользователе это конечно никак не отразится, но для собственного удовлетворения я переучился писать в одинарных кавычках через запятую smile.gif

Спустя 7 минут, 36 секунд (9.02.2009 - 10:52) sergeiss написал(а):
Насчет "для собственного удовлетворения" - это хорошо сказал smile.gif Поддерживаю.

Придется проверять самому smile.gif О результатах доложу.

Спустя 1 час, 28 минут, 25 секунд (9.02.2009 - 12:21) sergeiss написал(а):
Проверил.
Скрипт такой, тестировался на локальном хосте:
PHP
$s='';
$name="Test name";
$a=array();
for( 
$loop=1$loop<=10$loop++)
{
    
$start microtime(true);
    for( 
$i=1$i<=1000000$i++)
    {
        
$s 'Name is \''.$name.'\'';
    }
    
$a[]=(microtime(true) - $start);
}
    echo 
$s,"<br>";
    echo 
round(array_sum$a )/104).' seconds<br>';


Если берем строку в виде $s = "Name is '$name'"; , то получаем следующий результат (5 запусков скрипта):

0.7922 seconds
0.8297 seconds
0.7185 seconds
0.6915 seconds
0.6982 seconds


Ежели по-другому, вот так написать $s = 'Name is \''.$name.'\'';, то время получается немного поменьше (тоже 5 раз запускал).

0.6098 seconds
0.614 seconds
0.6194 seconds
0.6395 seconds
0.6155 seconds

Разница настолько незначительная (на мой взгляд), что я даже "париться" не буду smile.gif
К тому же, использование запятой для конкатенации возможно не везде. Например, в моем примере нельзя использовать запятую.

PS. Кстати. Ты хоть и говоришь, что лучше через запятую, но использовал точку (в конце в echo smile.gif).

Спустя 38 минут, 8 секунд (9.02.2009 - 12:59) jetistyum написал(а):
Имхо конкатенацию использовать тоже удобнее, так же как и отступы после открывающей фигурной скобки, и остальной выдержанный стиль программирования. На счет скорости - пытался проверить даже на больших строках, результат гораздо больше расходится от запуска к запуску, то 0.012 сек, то 0.003
на одном и том же коде при обновлении по f5.... можно конечно долго долбить, и доказать что на огромных строках имеется преимущество выполнения в 0.005 сек, конечно хорош любой прирост производительности, но уж очень это несущественно.
Скорее это просто более семантически-корректно выдержанный код, с четким разделением переменных и строк. писать иначе НЕ неправильно.
рекомендую ознакомиться и выбрать для себя один из стандартов оформления

http://www.rsdn.ru/article/mag/200401/codestyle.XML
http://tony2001.phpclub.net/doc/standard/
http://www.simplecoding.org/razrabotchiki-...eniya-koda.html

Спустя 1 час, 20 минут, 26 секунд (9.02.2009 - 14:19) LoneCat написал(а):
Ну вот, человек зашел спросить самую элементарщику - а тут ему вывалили... А за микрооптимизацию вообще надо бороды и руки рубить, скорость работы скрипта выигрывает засчет оптимальных алгоритмов, а не засчет каких-нибудь запятых, потому как разница в скорости видна только на миллионах повторений, а если в скрипте миллион echo - это уже по определению не оптимальный скрипт.

З.Ы. echo с запятой - вообще ничего общего с конкатенацией не имеет
PHP
$a 'abc';
$b 'cde';
// Вот это
echo $a $b;
// Тоже самое что
$c $a $b;
echo 
$c;
// Вот это - конкатенация
// А вот это
echo $a$b;
// Тоже самое что
echo $a;
echo 
$b;
// И с конкатенацией никак не связано


Спустя 2 часа, 2 минуты, 23 секунды (9.02.2009 - 16:21) bugmenot написал(а):
// Не разгоняйтесь так)) laugh.gif
Вот второй вопрос: можно ли какнить переносить текст на другую строчку кроме \n?
И вообще какая разница в переводе текста коммандой \n и <br>? Какую использовать в каких случаях?)

Спустя 55 минут, 16 секунд (9.02.2009 - 17:17) twin написал(а):
Внесу свою лепту. На счет одинарных кавычек.
Это дело стиля конечно, только выигрыш по скорости незначительный, а путаницы внести может порядочно.
Вот как будет интерпретирован такой код?
PHP
<?
echo "<td>Вася</td>\r\n";
echo '<td>Вася</td>\r\n';
Это самый простой пример, есть варианты посерьёзнее. Переключаться в одном листинге на разные кавычки - каша ИМХО. А чтоб почуствовать разницу в скорости, нужен такой длинный код, который по определению оптимальным не назовешь. Тут уже высказались по этому поводу.

Спустя 1 час, 18 минут, 9 секунд (9.02.2009 - 18:35) stepan написал(а):
разница между \n и <br> не большая, но тебе это зачем знать, выбирай какой для тебя удобней и в этом будет самая главная разница.
А так вообще /n взята из Perl, <br> из html

Спустя 3 часа, 14 минут, 51 секунда (9.02.2009 - 21:50) kirik написал(а):
Цитата (bugmenot @ 9.02.2009 - 08:21)
И вообще какая разница в переводе текста коммандой \n и <br>?


\n не будет выводится браузером как переход строки, но в блокноте ты его видишь когда нажимаешь "Энтер", а <br /> отобразится браузером как переход на новую строчку, в то же время блокнот так и покажет тебе ХТМЛьный тэг.

Цитата (LoneCat @ 9.02.2009 - 06:19)
А за микрооптимизацию вообще надо бороды и руки рубить, скорость работы скрипта выигрывает засчет оптимальных алгоритмов, а не засчет каких-нибудь запятых

Полностью согласен, в начале моей программерской деятельности я начитался кучу манов про оптимизацию процессов, с тех пор так и пишу =)

Цитата (twin @ 9.02.2009 - 09:17)
echo "<td>Вася<td>\r\n";
echo '<td>Вася<td>\r\n';
Это самый простой пример, есть варианты посерьёзнее.

напишу с разными кавычками и с конкатенацией.

Цитата (twin @ 9.02.2009 - 09:17)
Переключаться в одном листинге на разные кавычки - каша ИМХО.

ИМХО экранировать двойные кавычки по тысяче раз не резонно. Тем более это приводит ХТМЛ в нечитабельный ("копирабельный") вид. Я про это -
PHP
echo "<a href=\"test.php\" target=\"_blank\" class=\"link\">ClickMe</a>";
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.