Оператор конкатенации - PullRequest
2 голосов
/ 15 июня 2010

Это может быть глупый вопрос, но он меня поразил, и здесь я спрашиваю.

<?php
  $x="Hi";
  $y=" There";
  $z = $x.$y;
  $a = "$x$y";
  echo "$z"."<br />"."$a";
?>

$z использует традиционный оператор конкатенации, предоставляемый php и concatenates, и наоборот, $ a не делает,

Мои вопросы:

  1. , не используя оператор конкатенации, влияет ли это на производительность?

  2. Если это не так, вообще иметь оператор конкатенации.

  3. Почему есть 2 режима реализации, когда один выполняет работу?

Ответы [ 4 ]

3 голосов
/ 15 июня 2010
  1. Слегка, так как PHP должен анализировать всю строку в поисках переменных, в то время как при конкатенации он просто соединяет две переменные вместе.Таким образом, наблюдается незначительное снижение производительности, но это не заметно для большинства вещей.

  2. Намного проще объединить переменные, такие как $_SERVER['DOCUMENT_ROOT'], используя оператор конкатенации (с кавычками, вы должны заключить в кавычки)переменная в скобках или удаление одиночных кавычек в индексе массива, плюс это просто делает строку выглядит ужасно).Кроме того, оператор конкатенации обеспечивает большую гибкость форматирования.Например, вы можете разбить длинный строковый литерал на несколько строк, а затем объединить различные его части:

    $blah = "This is a really really long string. I don't even know how " .
        "long it is, but it's really long. Like, longer than an eel " .
        "or even a boa constrictor. Wow.";
    

    Вы также можете использовать оператор конкатенации для непосредственного включения возвращаемых значений из функций в строковый литерал(вы не можете включить вызов функции в строку в двойных кавычках), например:

    $blah = "This has a " . fn_call() . " result, which can't go in the quotes.";
    
  3. Я не уверен, что полностью понимаю, о чем вы здесь спрашиваете,но я могу сказать, что PHP заимствует много вещей из Perl, и одна из мантр Perl гласит: «Существует несколько способов сделать это».

2 голосов
/ 15 июня 2010

а.Да.PHP должен проанализировать строку для переменных.

b.Из-за таких строк, как: echo 'Your Ip address is' . get_ip() . '.';

По причинам A и B.

2 голосов
/ 15 июня 2010

В некоторых случаях вы пишете меньше с:

$someLongVarName ="Hi";
$someLongVarName .=" there";

VS

$someLongVarName ="Hi";
$someLongVarName = "$someLongVarName there";
0 голосов
/ 15 июня 2010

На ваш последний вопрос:

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

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