Intereting Posts
Преобразование utf8 в latin1 в PHP. Все символы выше 255 преобразуются в ссылки на char Как показать сервер и время пользователя в PHP? Вычисление среднего увеличения из значений массива в PHP что произошло, когда я использую multi ob_start () без ob_end_clean () или ob_end_flush ()? Yii2: проверка в форме с двумя экземплярами одной модели Передаются ли объекты PHP5 по ссылке? Когда лучше проверить асинхронные запросы cURL для завершения? PHP Последний скрипт входа подсчитывать строки в таблице со многими различными параметрами Проверьте язык строки на основе глифов в PHP PHP: уникальные посещения / обращения к определенным элементам с помощью файлов cookie / ip CodeIgniter 3.x – Перезагрузка просмотра с помощью другого CSS-файла с использованием пользовательского ввода Symfony 2 Security: продолжает перезагружать данные у поставщика услуг? Получить дату следующего 15-го и / или 30-го дня с помощью php? PHP Расширение класса заставляет детей наследовать одно и то же статическое свойство

Одиночные кавычки или двойные кавычки для переменной конкатенации?

Лучше ли объединить переменную (скажем, $name ) в существующую строку (скажем, $string ) следующим образом:

 $string='Hi, my name is '.$name 

или встроить переменную в строку следующим образом:

 $string="Hi, my name is $name"; 

или лучше использовать такую ​​функцию:

 $string=sprintf("Hi, my name is %s",$name); 

Что лучше с точки зрения процессорного времени / эффективности?

Solutions Collecting From Web of "Одиночные кавычки или двойные кавычки для переменной конкатенации?"

Каждый, кто сделал тест, пришел к выводу, что использование одинарных кавычек незначительно улучшает производительность. В конце одинарные кавычки приводят к простому конкатенации, в то время как двойные кавычки заставляют интерпретатор анализировать полную строку для переменных.

Однако добавленная нагрузка при этом настолько мала для последних версий PHP, что в большинстве случаев вывод заключается в том, что это не имеет большого значения.

Итак, для людей производительности: используйте одинарные кавычки. Для «мне нравится мой читаемый код» – люди: двойные кавычки намного лучше для удобочитаемости, как уже указывал Флавиус Стеф.

Изменить: Одна вещь. Если вы собираетесь использовать один доллар в своей строке без переменной, используйте одинарные кавычки точно! ( http://www.weberdev.com/get_example-3750.html указывает, что для разбора этих строк потребуется 4 раза)

Разница между одиночными и двойными кавычками в PHP заключается в том, что двойные кавычки являются «интеллектуальными» в том, что они будут анализировать переменные при чтении, в то время как одинарные кавычки «тупые» и не будут пытаться анализировать любой символ в строке.

Это приводит к некоторым незначительным различиям в отношении того, какие символы вы можете использовать; в основном, единственный персонаж, которого нужно избегать при использовании одинарных кавычек, – это одиночная кавычка:

 '\'' 

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

 "\$" 

Но это также позволяет использовать некоторые отличные вещи, такие как добавление новой строки в конец:

 "my string\n" 

С одинарными кавычками вам нужно будет сделать конкатенацию:

 'my string' . chr(10) 'my string' . "\n" 

Как правило, одинарные кавычки быстрее, потому что они «тупые».

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

Несколько слов об оптимизации: обычно нужно сначала написать программу так, как она должна работать, а затем найти самые большие узкие места и исправить эти конкретные. Если скорость строки действительно является проблемой для вас в PHP, вам может потребоваться перейти на другой язык.

Что касается скорости: вы, вероятно, захотите больше сосредоточиться на использовании памяти, чем на процессорном времени. В этих случаях время CPU можно считать довольно постоянным. Время процессора более актуально при написании алгоритмов, которые будут повторяться много раз.

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

Учти это:

 $str1 = 'asdf'; $str2 = 'qwer'; // this will result in more memory being allocated for temporary storage echo $str1 . $str2; // this will not allocate as much memory as the previous example echo $str1; echo $str2; 

Обычно я считаю, что использование интерполяции строк ( "Hi, my name is $name" ) лучше с точки зрения разборчивости.

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

Одиночные кавычки, если они применимы к науке о удобочитаемости и вдали от субъективности, на самом деле добавляют больше «шума». Шум и то, как он относится к удобочитаемости, много говорится в книге «Чистый код», и можно сделать вывод, что чем больше не-пробелов вы должны видеть, тем больше он препятствует читаемости. Если применить к субъективности, большинство мест, на которые я потратил время на чтение, предпочитают одиночные двойные кавычки.

Используйте свое мнение.

 $var = "My $string with $lots of $replacements." 

Является гораздо более читаемым, чем:

 $var = 'My ' . $string . ' with ' . $lots . ' of ' . $replacements . '.'; 

Я признаю, что:

 $var = "My string."; 

Выглядит почти так же, как:

 $var = 'My String.'; 

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

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

Это не имеет значения с точки зрения синтаксиса. Оба варианта верны. Используйте то, что чувствуете себя более комфортно.

Лично я чувствую себя лучше при использовании $string="Hi, my name is $name" , потому что вам не нужно возиться с кавычками. Просто изобразите сложный SQL-запрос, скажем, из 10 переменных …

PHP довольно медленный:

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-088-introduction-to-c-memory-management-and-c-object-oriented-programming-january-iap- 2010 / аудиторные примечания / MIT6_088IAP10_lec01.pdf

Слайд 3

Поэтому не беспокойтесь о небольших оптимизациях, подобных этим.

Больше сосредоточьтесь на использовании APC для кэширования кода в байтовый код. Вы увидите большой прирост скорости для проекта.

Лично, если это просто нормальная переменная или даже свойство класса, я бы написал ее так:

 $newVarA = "This is some text with a $variable"; $newVarB = "This is some more text, written in $settings->language"; 

Однако, если я использую значения массива, то я буду конкатенировать с одинарными кавычками.

 $newVarC = 'This is some text from a ' . $text['random'] . ' array'; 

Надеюсь, это имеет смысл. Все дело в том, чтобы найти конвенцию и придерживаться ее.

Мой девиз и ответ: Оставьте его компиляторам для написания машинного кода. Я скажу вам, что я имею в виду …

Используйте одинарные кавычки, когда вам не нужно включать переменные PHP, в противном случае используйте двойные кавычки. Не беспокойтесь о производительности, просто используйте APC на производственных серверах. Вместо этого сосредоточьтесь на написании наиболее удобного кода; использовать комментарии, двойные кавычки и т. д., даже если они могут замедлить работу кода. Любая оптимизация, которая уменьшает ремонтопригодность / удобочитаемость кода, является плохим, оставьте ее в кодеках-кодеках и компиляторах, чтобы превратить ваш код в машинный код, не делайте этого сами … обфускация исходного кода из-за оптимизации срабатывает.

Единственная строка с кавычками – лучший вариант, чем двойная кавычка, при конкатенации переменных. нажмите ссылку для лучшего понимания …

http://www.codeforest.net/php-myth-busters-using-single-quotes-on-string-is-faster-then-double-quotes

 $string='Hi, my name is '.$name 

Это лучший способ, в смысле комбинации php и html!

или вот так:

 $string="Hi, my name is $name"; 

Это старый путь!

Или вот так:

 $string=sprintf("Hi, my name is %s",$name); 

Это то, что написал программист из Visual Basic или других языков программирования клиентов!

Надеюсь, я был полезен.