Пример нестрогой типизации переменных в РНР:

<?php
$var = 1;
echo gettype($var)."<br />";
$var = "string";
echo gettype($var)."<br />";
$var = 0x88;
echo gettype($var)."<br />";
$var = true;
echo gettype($var)."<br />";
?>


<?php var_dump((bool) ""); // bool(false)
var_dump((bool) 1); // bool(true)
var_dump((bool) -2); // bool(true)
var_dump((bool) "foo"); // bool(true)
var_dump((bool) 2.3e5); // bool(true)
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
var_dump((bool) "false"); // bool(true)
?>


ТИП BOOLEAN
При преобразовании в логический тип, следующие значения рассматриваются как FALSE:
•Сам булев FALSE
•целое 0 (ноль)
•число с плавающей точкой 0.0 (ноль)
•пустая строка и строка "0"
•пустой массив
•объект без атрибутов (только в PHP 4)
•специальный тип NULL (включая неустановленные переменные)
Все остальные значения рассматриваются как TRUE (включая любой ресурс)

Внимание
-1 считается TRUE, как и любое ненулевое (отрицательное или положительное) число!

Особенности экранирования спецсимволов и вывода переменных при использовании одинарных кавычек:

<?php
echo 'это простая строка';

echo 'Также вы можете вставлять в строки
символ новой строки таким образом,
поскольку это нормально';

// Выведет: Однажды Арнольд сказал: "I'll be back"
echo 'Однажды Арнольд сказал: "I\'ll be back"';

// Выведет: Вы удалили C:\*.*?
echo 'Вы удалили C:\\*.*?';

// Выведет: Вы удалили C:\*.*?
echo 'Вы удалили C:\*.*?';

// Выведет: Это не вставит: \n новую строку
echo 'Это не вставит: \n новую строку';

// Выведет: Переменные $expand также $either не подставляются
echo 'Переменные $expand также $either не подставляются';
?>

Несколько примеров строк:
<?php
// Получение первого символа строки
$str = 'Это тест.';
$first = $str{0};

// Получение третьего символа строки
$third = $str{2};

// Получение последнего символа строки
$str = 'Это все еще тест.';
$last = $str{strlen($str)-1};

// Изменение последнего символа строки
$str = 'Посмотри на море';
$str{strlen($str)-1} = 'я';

?>


Порядок выполнения операторов:

Ассоциативность Оператор
неассоциативна new
правая [
неассоциативна ++ --
неассоциативна ! ~ - (int) (float) (string) (array) (object) @
левая * / %
левая + - .
левая << >> Побитовые сдвиги влево/вправо
неассоциативна < <= > >=
неассоциативна == != === !==
левая & Побитовое 'и'
левая ^ Исключающее или
левая | Побитовое 'или'
левая &&
левая ||
левая ? :
правая = += -= *= /= .= %= &= |= ^= <<= >>=
левая and
левая xor
левая or
левая ,

Основные управляющие структуры:

•if
if($a==1)
$b=2;

•else
if($a==1)
$b=2;
else
$b=3;

•elseif
if($a==1)
$b=2;
elseif($a==2)
$b=3;
elseif($a==3)
$b=4;
else
$b=5;

•while
$i=0;
whie($i<3){
$i++;
echo $i.”<br />”;
}

•do-while
$i = 5;
do {
echo $i.”<br />”;
$i--;
} while ($i > 0);

•for
for($i=0;$i<=5;$i++){
echo $i.”
”;
}

•foreach
Организация итерации по индексированным и ассоциированным массивам
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement

$arr = array("one", "two", "three");
foreach ($arr as $value) {
echo "Значение: $value<br />\n";
}

$a = array(1, 2, 3, 17);

foreach ($a as $v) {
echo "Текущее значение \$a: $v.\n";
}

/* foreach пример 2:
Выведет:
Текущее значение $a: 1.
Текущее значение $a: 2.
Текущее значение $a: 3.
Текущее значение $a: 17.
*/

$a = array(1, 2, 3, 17);

$i = 0; /* Только для иллюстрации */

foreach ($a as $v) {
echo "\$a[$i] => $v.\n";
$i++;
}
/*
Выведет
$a[0] => 1. $a[1] => 2. $a[2] => 3. $a[3] => 17.
*/

•break
whie($i<3){
if($i==2)
break;
$i++;
echo $i.”<br />”;
}

•continue
whie($i<3){
if($i==2)
continue;
$i++;
echo $i.”<br />”;
}

•switch
Более наглядное представление обработки разных вариантов действия
if ($i == 0) {
echo "i равно 0";
} elseif ($i == 1) {
echo "i равно 1";
} elseif ($i == 2) {
echo "i равно 2";
}

switch ($i) {
case 0:
echo "i равно 0";
break;
case 1:
echo "i равно 1";
break;
case 2:
echo "i равно 2";
break;
default:
echo "i равно чему-то другому";
}

Упражнения

Пример

Приведение типов
1. Создать переменную $var и последовательно присвоить ей значения имеющие следующие типы:
•boolean
$var = false;
echo gettype($var);

•integer
$var = 11;
echo gettype($var);

•float
$var = 11.2;
echo gettype($var);

•string
$var = “String value”;
echo gettype($var);

2. Использование функций приведения типов. Запустить и прокомментировать результат выполнения следующих функций:
•intval()
o echo intval(42) ." <hr>";
o echo intval(4.2) ." <hr>";
o echo intval('42') ." <hr>";
o echo intval('+42') ." <hr>";
o echo intval('-42') ." <hr>";
o echo intval(042) ." <hr>";
o echo intval('042') ." <hr>";

• floatval()
o echo floatval('122') ." <hr>";
o echo floatval('The') ." <hr>";
o echo floatval('122.34343') ." <hr>";
o echo floatval('122.34343The') ." <hr>";
o echo floatval('The122.34343') ." <hr>";
o echo floatval('122.The34343') ." <hr>";

•strval()
o echo strval(122) ." <hr>";
o echo strval(122.01) ." <hr>";
o echo strval(0x122) ." <hr>";
o echo strval(0122) ." <hr>";

•settype()
$foo = "5bar"; // string
$bar = true; // boolean
settype($foo, "integer"); // $foo is now 5 (integer)
settype($bar, "string"); // $bar is now "1" (string)

Операции с логическими переменными:

1. Запустить и прокомментировать следующий код

if(TRUE){
echo "TRUE is true<hr />";
}else{
echo "TRUE is flase<hr />";
}

if(1){
echo "1 is true<hr>";
}else{
echo "1 is flase<hr>";
}

if(0.0){
echo "0.0 is true<hr>";
}else{
echo "0.0 is flase<hr>";
}

if(""){
echo "\"\" is true<hr>";
}else{
echo "\"\" is flase<hr>";
}


Операции с целыми числами:
1. Выполните следующие операции с целыми числами
$a = 3;
$b = 2;
echo '<br>$a='.$a;
echo '<br>$b='.$b;

$c = $a+$b;
echo '<br>$a+$b='.$c;

$c = $a-$b;
echo '<br>$a-$b='.$c;

$c = $a*$b;
echo '<br>$a*$b='.$c;

$c = $a/$b;
echo '<br>$a*$b='.$c;

Операции со строками:
1. Запустить и прокомментировать результат выполнения
$expand = “EXPAND”;
$either = “EITHER”;

echo 'это простая строка';
echo 'Также вы можете вставлять в строки
символ новой строки таким образом,
поскольку это нормально';
echo 'Однажды Арнольд сказал: "I\'ll be back"';
echo 'Вы удалили C:\\*.*?';
echo 'Вы удалили C:\*.*?';
echo 'Это не вставит: \n новую строку';
echo 'Переменные $expand также $either не подставляются';
echo “Переменные $expand также $either подставляются. Почему?”;
echo $expand + $either;

Приоритет операторов и управление им


1. Вывести результат выполнения следующих выражений: 1 + 5 * 3
(1 + 5) * 3
(12 + 13) – (4 + 6)
12 + 13 – 4 + 6

Пример желаемого вывода:
1 + 5 * 3 = 16

Операторы:

if
Вначале задать значение переменной $name. Написать проверку её значения и вывести приветствие, если в $name содержит имя “John”.

else
Доработать предыдущее задание, чтобы в случае, если в $name содержится не John” вывести “Приветствую Незнакомец”.

elseif
Произвести проверку на имена “John”, “Bill”, “Sam”. Также, в случае отрицательного результата выводит “Приветствую Незнакомец”.

while
Вывести последовательно числа от 1990 до 2007 используя цикл while.

do-while
Вывести последовательно числа от 1990 до 2007 используя цикл do while.

for
Вывести последовательно числа от 1990 до 2007 используя цикл for.

break
Вывести последовательно числа от 1990 до 2007 используя цикл while. Прервать вывод на 1995 году.

continue
Вывести последовательно числа от 1990 до 2007 используя цикл while. Не выводить года с 1994 по 1997.

switch
Задать значение переменной $name. Произвести проверку переменной $name на имена “John”, “Bill”, “Sam”. Также, в случае отрицательного результата вывести “Приветствую Незнакомец”.
Hosted by uCoz