2 сентября 2010 г.

Немного про конкатенацию строк, print и echo в PHP

PHP как язык имеет много интересных особенностей. Одна из таких, это конкатенация строк, а также то как работают две самый популярные функции. Чтобы не расплываться по древу попробую описать в одном примере:
PHP
1
2
3
<?php
echo print (7)+1,'5'+'4';
?>
Какой будет результат?

Давайте для начала опишу некотороые свойства и особенности:
  • Только print возвращает результат, и это всегда 1
  • Только echo позволяет конкатенировать строки запятой
  • Обе print и echo могут работать без скобок
На последнем в свое время я как раз и попался.

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

PHP
1
2
3
4
56
7
8
9
1011
12
13
14
1516
17
18
<?php
echo print (7)+'1','5'+'4';
 
// print не ограничевается скобками но не позовляет запятую:
echo print 7 + '1','5'+'4'; 
// Знак "+" кастит оба операнда в числа и имеет более 
// высокий приоритет
echo print (7+1),(5+4);
echo print 8,9;
 //print работает как функция и после выполнения (вывода строки)
// возваращет результат 1
print 8; echo 1,9;
 
// echo позволяет знак "," для конкатенации строк, он кастит оба 
// операнда в строки
print "8"; echo "19"; // => 819 
// Готово
?>

Вот такие простые вроде бы вещи, а столько ньюансов...

Еще об этом: на altervista

Поиск