В чем разница между одинарными и двойными кавычками в PHP?

Рабочая демонстрация

$('#alreadyclicked').val('no click');
$('td.dblclickable').on('click',function(){
    var $button=$(this);
    if ($button.data('alreadyclicked')){
        $button.data('alreadyclicked', false); // reset
        $('#alreadyclicked').val('no click');

        if ($button.data('alreadyclickedTimeout')){
            clearTimeout($button.data('alreadyclickedTimeout')); // prevent this from happening
        }
        // do what needs to happen on double click. 
        $('#action').val('Was double clicked');
    }else{
        $button.data('alreadyclicked', true);
        $('#alreadyclicked').val('clicked');
        var alreadyclickedTimeout=setTimeout(function(){
            $button.data('alreadyclicked', false); // reset when it happens
            $('#alreadyclicked').val('no click');
            $('#action').val('Was single clicked');
            // do what needs to happen on single click. 
            // use $button instead of $(this) because $(this) is 
            // no longer the element
        },300); // <-- dblclick tolerance here
        $button.data('alreadyclickedTimeout', alreadyclickedTimeout); // store this id to clear if necessary
    }
    return false;
});

, очевидно, использует

745
задан ÐℛẲḰỮℒѦ 4 June 2019 в 09:45
поделиться

5 ответов

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

  1. Строки в одинарных кавычках отображают все почти полностью «как есть». Переменные и большинство управляющих последовательностей не интерпретируются. Исключением является то, что для отображения буквальной одинарной кавычки вы можете экранировать ее с помощью обратной косой черты \ ', а для отображения обратной косой черты вы можете экранировать ее с помощью другой обратной косой черты \\ ( Итак, да, анализируются даже строки в одинарных кавычках ).
  2. Строки с двойными кавычками будут отображать множество экранированных символов (включая некоторые регулярные выражения), а переменные в строках будут оцениваться. Важным моментом здесь является то, что вы можете использовать фигурные скобки, чтобы изолировать имя переменной, которую вы хотите вычислить . Например, предположим, что у вас есть переменная $ type , и вы, что echo "The $ types are" Это будет искать переменную $ types . Чтобы обойти это, используйте echo "The {$ type} s are" Вы можете поставить левую скобку до или после знака доллара. Взгляните на синтаксический анализ строки , чтобы узнать, как использовать переменные массива и тому подобное.
  3. Строковый синтаксис Heredoc работает как строки с двойными кавычками. Он начинается с <<< . После этого оператора предоставляется идентификатор, а затем перевод строки. Далее следует сама строка, а затем снова тот же идентификатор, чтобы закрыть цитату. В этом синтаксисе нет необходимости использовать кавычки.
  4. Nowdoc (начиная с PHP 5.3.0) синтаксис строки работает по существу как строки в одинарных кавычках. Разница в том, что не нужно экранировать даже одинарные кавычки или обратную косую черту. Nowdoc идентифицируется той же последовательностью <<< , используемой для heredocs, но идентификатор, который следует за ним, заключен в одинарные кавычки, например <<< 'EOT' . В nowdoc анализ не выполняется.

Скорость:
Я бы не стал придавать слишком большое значение тому, чтобы одинарные кавычки были быстрее двойных. Вероятно, они быстрее в определенных ситуациях. Вот статья , объясняющая один способ, которым одинарные и двойные кавычки по существу одинаково быстры, начиная с PHP 4.3 ( Бесполезные оптимизации внизу, раздел C ). Кроме того, на этой странице тестов есть сравнение одинарных и двойных кавычек. Большинство сравнений одинаковы. Есть одно сравнение, в котором двойные кавычки работают медленнее, чем одинарные.

1039
ответ дан 22 November 2019 в 21:24
поделиться

Строка с одинарными кавычками не интерпретирует переменные внутри себя. Строка с двойными кавычками интерпретируется.

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

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

36
ответ дан 22 November 2019 в 21:24
поделиться

Вещи оцениваются в двойных кавычках, но не в одинарных:

$s = "dollars";
echo 'This costs a lot of $s.'; // This costs a lot of $s.
echo "This costs a lot of $s."; // This costs a lot of dollars.
198
ответ дан 22 November 2019 в 21:24
поделиться

В PHP оба «мое имя» и «мое имя» являются строками. Вы можете прочитать об этом в руководстве по PHP .

Вам следует знать следующее:

$a = 'name';
$b = "my $a"; == 'my name'
$c = 'my $a'; != 'my name'

В PHP люди используют одинарные кавычки для определения постоянной строки, например 'a' , 'my name' , ' abc xyz ', при использовании двойных кавычек для определения строки, содержащей идентификатор вроде «a $ b $ c $ d» .

И еще одна вещь:

echo 'my name';

быстрее, чем

echo "my name";

, но

echo 'my ' . $a;

медленнее, чем

echo "my $a";

. Это верно для других случаев использования строки.

24
ответ дан 22 November 2019 в 21:24
поделиться

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

11
ответ дан 22 November 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: