Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6.96 Mб
Скачать

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

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

$one = '1';

$two= "2";

echo $one, $two;

print $one+$two; // выведет - 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

?>

Операторы управления

PHP содержит все основные конструкции языка C++: условные операторы if…else (elseif), switch, четыре вида операторов цикла и др.

Оператор выбора if имеет следующий синтаксис:

if (boolexp) { /*операторы, выполняемые при boolexp=true*/} //1

else { /*операторы, выполняемые при boolexp=false */ } //2

Если выражение boolexp принимает значение true, то выполняется группа операторов 1, иначе – группа операторов 2. Допустимо также использование конструкции if {} else if {}.

В следующем примере показана возможность отключения PHP, чтобы вывести без интерпретации часть html – документа после ?>.

<?php //pr8.php

$boolexp=true;

if ($boolexp) : ?> //отключение php

<img src="img/A_A.jpg" >

<?php endif; //включение php

$c=5;

echo "c=", $c=$c or 4, "<br>";//1

?>

Оператор if() при этом надо закончить оператором endif (аналогично endwhile, endfor).Будет выведено изображение и с=1:

//отключение php

<img src="img/A_A.jpg" >

c=1<br>

Другой вариант состоит в использовании фигурных скобок вместо двоеточия:

<?php //pr81.php

$bexp=true;

if ($bexp) { ?> //отключение php

<img src="img/A_A.jpg" >

<?php } //включение php

$c=5;

echo "c=", $c=$c or 4, "<br>";//1

?>

В PHP существует четыре вида циклов, первые три из них аналогичны соответствующим циклам в С++:

Цикл с предусловием:

while (boolexp) { /*операторы, выполняемые при boolexp=true */ }

Цикл с постусловием:

do { /*операторы, выполняемые при boolexp=true */ }

while (boolexp);

for(exp1; boolexp; exp3){ /*операторы*/ } // цикл с параметрами

Здесь по традиции exp1 – начальное выражение, boolexp – условие выполнения цикла, exp3 – выражение выполняемое в конце итерации цикла (как правило, это изменение начального значения). Циклы выполняются, пока булевское выражение boolexp равно true.

Eще один цикл, упрощающий доступ к массивам:

foreach($array as[$key=>] $value){ /*операторы*/ }

При проходе каждого элемента массива в переменную $key помещается индекс данного элемента, а в переменную value – значение элемента. Индекс $key может отсутствовать.

Рассмотрим пример вывода элементов массива:

<?php //pr9.php

$massiv = array('one','two','three');

foreach($massiv as $value)echo $value;//onetwothree

?>

Аналогично C++ используется оператор выбора варианта switch:

switch(exp) {

case exp1:{/*операторы*/}

break;

case expN:{/*операторы*/}

break;

default: {/*операторы*/}

}

При совпадении значения ключа exp с одним из значений, указанным в case, выполняется соответствующий вариант, затем все блоки операторов, пока не встретится оператор break. Значения exp1,…, expN могут быть константами целого, вещественного или стрингового типа. Оператор прерывания break используется также для выхода из циклов. Для прерывания итерации цикла используется и оператор continue.

<html>

<head></head>

<body>

<p>в прямоугольной матрице переставить столбцы в порядке возрастания суммы их элементов</p>

<?php //pr10.php

$matrix = array();

$n = 3;

$m = 5;

for($i=0;$i<$n;$i++)

for($j=0;$j<$m;$j++){

$matrix[$i][$j] = rand(0,9);

}

for($i=0;$i<$n;$i++){

for($j=0;$j<$m;$j++){

echo($matrix[$i][$j]);

echo(" ");

}

echo("<br>");

}

$sum = array();

for($j=0;$j<$m;$j++){

$sum[$j] = 0;

for($i=0;$i<$n;$i++){

$sum[$j]+=$matrix[$i][$j];

}

}

echo("<br>");

for($i=0;$i<$m;$i++){

echo($sum[$i]);

echo(" ");

}

for($i=0;$i<$m-1;$i++)

for($j=0;$j<$m-1-$i;$j++){

if($sum[$j]>$sum[$j+1]){

$temp = $sum[$j];

$sum[$j] = $sum[$j+1];

$sum[$j+1] = $temp;

for($k=0;$k<$n;$k++){

$temp = $matrix[$k][$j];

$matrix[$k][$j] = $matrix[$k][$j+1];

$matrix[$k][$j+1] = $temp;

}

}

}

echo("<br>");

echo("new matrix:");

echo("<br>");

for($i=0;$i<$n;$i++){

for($j=0;$j<$m;$j++){

echo($matrix[$i][$j]);

echo(" ");

}

echo("<br>");

}

?>

</body> </html>