PHP: различные кавычки?

Я не повторю обычный материал об Использовании или освобождении неуправляемых ресурсов, который был все покрыт. Но я хотел бы указать на то, что кажется распространенным заблуждением.
, Учитывая следующий код

Public Class LargeStuff
  Implements IDisposable
  Private _Large as string()

  'Some strange code that means _Large now contains several million long strings.

  Public Sub Dispose() Implements IDisposable.Dispose
    _Large=Nothing
  End Sub

я понимаю, что Доступная реализация не следует текущим инструкциям, но надо надеяться Вы все получаете идею.
Теперь, то, когда Располагают, называют, сколько памяти освобождено?

Ответ: Ни один.
Вызов Располагает, может высвободить неуправляемые средства, он не МОЖЕТ исправить управляемую память, только GC может сделать это. Но это вовсе не значит то вышеупомянутое не является хорошей идеей, после вышеупомянутого шаблона все еще хорошая идея на самом деле. Однажды Расположите, был выполнен, нет ничего останавливающего GC, исправляющий память, которая использовалась _Large, даже при том, что экземпляр LargeStuff может все еще быть в объеме. Строки в _Large могут также быть в генерале 0, но экземпляр LargeStuff мог бы быть генералом 2, поэтому снова, память будет исправлена раньше.
нет никакого смысла в добавлении финализатора для вызова Расположить метода показанным выше все же. Это просто ЗАДЕРЖИТ исправление памяти, чтобы позволить финализатору работать.

6
задан Léo Léopold Hertz 준영 23 August 2009 в 08:02
поделиться

3 ответа

Подстановка переменных не выполняется при использовании одинарных кавычек ('), что означает, что значения в вашем первом примере были бы буквально $ 1 $ 2 и т. Д., Если бы это была обычная строка и не передавалась в функция, которая их заменяет.

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

`вызывает механизм оболочки и вызывает его как фактическую команду и возвращает результат, как и в perl. Следовательно, он имеет совершенно другое значение.

примеры:

$email = 'user@example.org';
$sql1 = "SELECT user_id FROM users WHERE email = $email";
$sql2 = 'SELECT user_id FROM users WHERE email = $email';

$ sql1 будет SELECT user_id FROM users WHERE email = user@example.org

$ sql2 будет SELECT user_id FROM users WHERE email = $ email

19
ответ дан 8 December 2019 в 04:54
поделиться

По сути, " позволяет вставлять переменные следующим образом:

<?php
$beer = 'Heineken';
echo "$beer's taste is great"; // works; "'" is an invalid character for variable names
echo "He drank some $beers";   // won't work; 's' is a valid character for variable names but the variable is "$beer"
echo "He drank some ${beer}s"; // works
echo "He drank some {$beer}s"; // works
?>

(Из руководства php )

Использование ' означает, что проверка переменных не выполняется.

<?php
echo '$beer';
?>

Будет выведено $ beer .

3
ответ дан 8 December 2019 в 04:54
поделиться

Разница между строками в одинарных и двойных кавычках хорошо объяснена в руководстве PHP по строкам .

В вашем примере, поскольку вы используете переменные подстановки, такие как $ 1 , которые означают что-то особенное для pg_query_params и что вы не хотите, чтобы PHP интерпретировал как имена переменных, вы должны использовать одинарные кавычки для строк запроса SQL.

2
ответ дан 8 December 2019 в 04:54
поделиться
Другие вопросы по тегам:

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