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.SU » » Хранение данных, их вывод и обработка » Строковые операции и вывод

Страниц (2): [1] 2 »
 

1. Uchenik - 09 Февраля, 2012 - 12:31:59 - перейти к сообщению
Мелкий
спор немного затянулся, Вам так не кажется?
Кстати Топ вообще не об этом =)
Ладно, в этой части признаю свою ошибку, под давлением улик =)
Но вот в остальном меня ещё никто не переубедил.
Или Вы и на эту тему хотите поспорить?
На сколько правильно писать
PHP:
скопировать код в буфер обмена
  1.  header("WWW-Authenticate: Basic realm=\"Administration\"");

вместо
PHP:
скопировать код в буфер обмена
  1. header('WWW-Authenticate: Basic realm="Administration"');

Лично мне экранирование глаза режет, а Вам? По-моему вообще изучение PHP нужно начинать с понимания разницы между кавычками и апострофами
2. Мелкий - 09 Февраля, 2012 - 13:02:36 - перейти к сообщению
Uchenik пишет:
Или Вы и на эту тему хотите поспорить?

Можно и подискутировать, если хотите Подмигивание

Uchenik пишет:
На сколько правильно писать

Не имеет значения.

Uchenik пишет:
Лично мне экранирование глаза режет, а Вам?

Да, пожалуй. Однако, HTTP допускает и одиночные кавычки, на сколько помню.

Uchenik пишет:
Двойные кавычки " используются только в случае если между ними находится переменная.

А так же:
спецсимволы, \r\n очень часто используются всё же
16-ричные представления
просто другие кавычки, чтобы не плодить экранирование
Падением производительности же запросто можно пренебречь, т.к. оно мало и уж наверняка не это является бутылочным горлышком. На echo затык чаще встречается.

Итого - достаточно просто помнить о особенности интерпретации разных типов записи строк.
3. Uchenik - 09 Февраля, 2012 - 13:08:13 - перейти к сообщению
Оно мало и незаметно, в случае если это пара строк,или даже пара десятков строк, а если несколько сотен или даже несколько тысяч строк кода, в которых везде стоят неправильные кавычки и куча экранов, работать будет определённо медленнее чем валидный код, не говоря уже о том что его читать неудобно =)
4. Мелкий - 09 Февраля, 2012 - 13:43:13 - перейти к сообщению
Uchenik, о да, целых 0.1с на 100млн строковых операциях.
Но действительно использование переменных в строке увеличивает время её обработки. На тех же самых 100млн операций насчитал 24с с конкатенацией (при том, без разницы, была строка в одиночных или двойных кавычках) и 30 - с переменной в строке.
На 2.5с просели от использования спецсимволов.

PS: php5.3.5
5. Uchenik - 09 Февраля, 2012 - 13:51:57 - перейти к сообщению
ЧТД =)
(Добавление)
Спойлер (Отобразить)
6. Мелкий - 09 Февраля, 2012 - 14:16:08 - перейти к сообщению
Чего и Требовалось Добиться - другое. Использовать надо то, что нужно. Язычок

Спойлер (Отобразить)
7. Uchenik - 09 Февраля, 2012 - 14:20:06 - перейти к сообщению
Не нужно плодить бредокодеров, которые будут забивать код экранами, потому-что им лень понять разницу между кавычками и апострофами =)
(Добавление)

Спойлер (Отобразить)
8. snikers987 - 09 Февраля, 2012 - 14:30:53 - перейти к сообщению
Цитата:
росто другие кавычки, чтобы не плодить экранирование

А управляющие конструкции типа:
PHP:
скопировать код в буфер обмена
  1.  
  2. $sMes = 'world';
  3. $sStr = "Привет {$sMes}!";

?
По моим тестам иногда интерпритатор отрабатывает их быстрее даже чем конкатенацию с апострофами.
9. Мелкий - 09 Февраля, 2012 - 14:39:12 - перейти к сообщению
О, про этот вариант я забыл.
Заметной разницы не нашёл: "foo$s", "foo{$s}", "foo${s}"
10. Uchenik - 09 Февраля, 2012 - 14:46:58 - перейти к сообщению
ОК! Давайте тогда вместо
везде писать
PHP:
скопировать код в буфер обмена
  1. $world='world'; echo "HELLO {$world}";
БРЕД! Зачем загружать код лишними действиями.
Или вообще, давайте уже для полного счастья добавим экранирование.
PHP:
скопировать код в буфер обмена
  1. echo "\"HELLO WORLD\"";

snikers987 где логика? И вообще мне начинает казаться что Вы просто нашли новую тему чтобы тупо поспорить, не важно о чём, не важно зачем и кому это нужно, важен сам факт спора!
Делаете вид что спорите по делу, а на самом деле тупо накручиваете счетчик сообщений.
Это даже заметно по Вашему КПД, из почти 800 сообщений, только 9 полезных. Реальное достижение, учитесь у таких как Eugen. Он не болтает просто так, он всегда говорит четко, коротко и по делу.
11. EuGen - 09 Февраля, 2012 - 14:52:33 - перейти к сообщению
Выделено из темы, не имеющей к этому отношения
12. snikers987 - 09 Февраля, 2012 - 15:11:36 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?
  2.    $str  =  'world';
  3. $s  =  microtime(true);
  4. for($i = 0; $i<1000000; $i++){
  5.     $c  =  "Hello {$str}";
  6. }
  7. echo microtime(true)-$s;
  8. echo '<br>';
  9. $s  =  microtime(true);
  10. for($i = 0; $i<1000000; $i++){
  11.     $c  =  "Hello $str";
  12. }
  13. echo microtime(true)-$s;
  14. echo '<br>';
  15. $s  =  microtime(true);
  16. for($i = 0; $i<1000000; $i++){
  17.     $c  =  'Hello '.$str;
  18. }
  19. echo microtime(true)-$s;


http://privatbank24[dot]info/test02/strtest.php
Но результаты не однозначные..
Но разница не значительная..

update
Цитата:

БРЕД! Зачем загружать код лишними действиями.
Или вообще, давайте уже для полного счастья добавим экранирование.

В чем бред? Это был пример, никто не говорил о том чтобы так представлять строки.
Речь шла о конкатенации переменных со строками, если вы не заметили.
А на счет постов, Вам не приходил в голову тот факт, что я могу еще и сам спрашивать?
А количество постов для меня абсолютно не имеет значения, вы тут пишете об оптимальности, а в своей теме двумерный массив вывести не можете, смешно не правда ли?
13. Uchenik - 10 Февраля, 2012 - 07:02:36 - перейти к сообщению
Я уже решил свою проблему, но как писалось в моей теме, моё решение не столь элегантное как хотелось бы, но зато полностью соответствует моим требованиям к коду:
1. Никаких echo или ptint в коде.
2. Никакого смешивания с HTML
3. Управляемость и изменяемость без вмешательства в код.
4. Зависимость модулей проекта друг от друга, но при этом если 1 модуль упал, проект должен продолжать работу.

А как я решил свою проблему, я выложу когда приведу код в более-менее читабельный вид.
14. Мелкий - 05 Апреля, 2012 - 15:46:34 - перейти к сообщению
И внезапно ещё о разнице скорости переменных в кавычках и конкатенации:
http://habrahabr[dot]ru/post/141290/#comment_4727402

Уже на 4 переменных разница в пределах погрешности, а дальше - конкатенация обходится дороже, чем поиск переменных в строке.
15. EuGen - 05 Апреля, 2012 - 15:48:29 - перейти к сообщению
The PHP Benchmark пишет:
In reality the echo and print functions serve the exact purpose and therefore in the backend the exact same code applies. The one small thing to notice is that when using a comma to separate items whilst using the echo function, items run slightly faster.

 

Powered by ExBB FM 1.0 RC1