logo
Vvedenie_v_Veb_programmirovanien_2 / Vvedenie_v_Veb_programmirovanien_2

Строковые операции

Операция “+” используется только для сложения чисел, являющихся значениями строк и не является операцией конкатенации (слияния строк). Операцией конкатенации является операции “.” И ”.=”.

<?php //pr4.php

$one = '1';

$two= "2";

echo $one, $two;

print $one+$two; // выведет - 1 2 3

echo $one.$two; // выведет - 12

$one = (int)$one; $two= (float)$two;

print $one+$two;//3

$a = "Hello ";

$a .= "World!"; // теперь $a содержит "Hello World!"

?>

Вывод:

123123

Переменные $one и $two являются строковыми, при сложении происходит неявное преобразование их значений к числовым. Может быть использовано явное преобразование: $one = (int)$one; $two= (float)$two;

Рассмотрим операторы сравнения строк. В PHP операнды сравниваются, как строки, только в случае, если оба они - строки. В противном случае они сравниваются как числа. При этом любая строка, которую PHP не удается перевести в число, в том числе и пустая, будет восприниматься как 0. Для сравнения строк не рекоммендуется использовать операторы сравнения == и !=, поскольку они требуют преобразования типов. Пример:

<?php

$x=0;

$y=1;

if ($x == "") echo "<p>x - пустая строка</p>";

if ($y == "") echo "<p>y - пустая строка</p>";

// Выводит:

// x - пустая строка

?>

Данный скрипт сообщает нам, что $x - пустая строка. Это связано с тем, что пустая строка ("") трактуется здесь как 0. Чтобы избежать путанницы и преобразования типов, при сравнении строк рекомендуется пользоваться оператором эквивалентности. Оператор эквивалентности сравнивает величины и по значению, и по типу:

<?php

$x="string";

$y="string";

$z="Строка";

if ($x === $z) echo "<p>Строка X равна строке Z</p>";

if ($x === $y) echo "<p>Строка X равна строке Y</p>";

if ($x !== $z) echo "<p>Строка X НЕ равна строке Z</p>";

// Выводит:

// Строка X равна строке Y

// Строка X НЕ равна строке Z

?>