Обучение в PHP - част 3 (Динамична промяна на типовете)

Динамична промяна на типовете

В PHP не е необходимо да декларирате променливите, като им зададете тип; техният тип се променя в зависимост от съдържанието им. Например, променлива с име $test_item може да се инициализира с низ, след което може да съдържа цяло число. Поради тази причина в PHP променливите могат да съхраняват произволен тип данни, без да се декларира изрично типът им. Можете също така да съхранявате число като низ, ако го поставите в кавички.

Ето и няколко примера:

$Мyval = " 1500 "; //Съхранява стойността като низ
$Мyval = 1500; //Съхранява стойността като цало число
$Мyval = " 145.215 "; //Съхранява стойността като низ
$Мyval = " 145.215 "; //Съхранява стойността като десетично число


В горния пример типът на променливата $Myval се променя на базата на зададена й стойност.
Освен промяната на типа на базата на съдържанието на променливите, можете също така да зададете изришно типове на променливите.

Явно задаване (промяна) на типовете

Езикът PHP предоставя функционалност за промяна на типовете, подобна на тази в С. При явната промяна на типовете (type casting) вие променяте явно типа на променливата. В PHP можете да извършвате следните промени на типовете

Видове промяна на типовете

|-----------------------------------------------------|------------------------------|
| Предназначение | Преобразуване |
|-----------------------------------------------------|------------------------------|
За конвентиране на булева стойност (bool), (boolen)
За конвентиране до целочислена стойност (int), (integer)
За конвентиране достойност десетична дроб (float), (double), (real)
За конвентиране до масив (array)
За конвентиране до обект (object)


Можете също така да конвентирате стойност до низ, като я поставите в кавички. КОгато преобразувате масив до низ, резултатът е низът "Array". Обаче ако конвентирате обект до низ, резултатът е : Object". От друга страна, ако низ се конвентира до масив, низът, става първи елемент на масива, а когато конвентирате низ до обект, резултатът е атрибут с име 'scaler' и стойност конвентирания низ.

Например:

$Val = ' Hello ';
$Greet = (array) $Val;
echo $Greet [0] ; // Резултатът е 'Hello'

$Val = 'Hello';
$obj = (object) $Val;
echo $obj -> scalar; // Резултатът ' Hello'


горните примери променливата $Val има стойност Hello. В първият пример променливата $Val се конвентира до масив с име $Greet. Тази променлива съдържа символите на низа като отделни елементи на масива. Във втория пример същата променлива $Val се преобразува до обект с име $obj, който може да се използва за визуализиране на стойността.

Можете да конвентирате променлива от произволен тип до булев, целочислен тип или низ. Трябва обаче да спазвате някой павила при конвентирането на от един тип в друг. Следващите секции разглеждат конвентирането до булев, целочислен и нозов тип.

Конвентиране до булева стойност

PHP 4 предоставя възможност за конвентирането на стойностите до булеви. Булевата стойност се определя в зависимост от конвентираната стойност и може да е или True, или False.

Можете да използвате изразите (bool) или (boolen), за да конвентирате променлива до булева стойност. Но в PHP по-честият случай е на неявно конвентиране до булева стойност, ако извиканата функция го изисква.

По време на конвентирането до булева стойност, прис следноте условия получената стойност е False:

- Празен низ или низ съдуржащ 0
- Целочислена стойност 0
- Променлива имаща стойност NULL
- Масив с 0 елемента
- Обект с 0 елемента

Във всички други случай конвентираната стойност е True.

Конвентиране до целочислена стойност

МОжете да използвате изразите (int) и (integer), за да конвентирате стойности до целочислени. Ако се опитвате да конвентирате реално число до цяло число, се взема само цялата част. Ако конвентирате булева стойност до цяло число, се взема само цялата част. Ако конвентирате булева стойност до цяло число, стойността True се конвентира до 1, a стойността Falsse до 0. Както ще видите в случаите на конвентиране до низ, при низовете се взема начакото, за да се определи каква ще бъде стойността при конвентирането.

Конвентиране на низ

Низ съдържащ цяло число може лесно да се конвентира до целочислен тип. Но ако низът съдържа типовете '.', 'е' или 'Е'. той се конвентира до десетична дроб. При определяне на типа на конвентираняи низ, се взема предвид началото на низа. Например, ако низът започва с число, то конвентираната стойност е число, ако низът започва с букви, то получената стойност е нула. Изключение от това правило се прави, когато низът освен буквио съдържа и цифри, но разделени с интервали. В този случай резултатъ е само числовата чат:

Например:

$item = " 15 boxes grain" + 2 ; // Резултатът е 17
$item = "15units" + 2; // Резултатът е 15
$item = "12.4" + 2; // Резултатът е 14.4
$item = "-12.4kg" + 2; // Резултатът е -14.4


В горните примери, операторът за събиране се използва за събиране на низ с число. Както може би сте забелязали, ако низът съдържа цифра, цифрите се извличат и се събират с число.

Променящи се променливи

Променящи се променливи представляват променлива, съхраняваща име на променлива. Въпреки, че това може да звучи малко объркващо, това означава, че текущата стойност, съхранена в $greet, се използва за създаване ан друга променлива. Това се обяснява от следващия пример.

$greet = "greeting";
$$newgreet = "hello!";
// Това е еднакво с реда $greeting = "hello";


В горния пример променливата $greet съдържа стойността greeting. Вместо да се създаде нова променлива с име $greeting и да и се присвои стойност, можете да използвате $$newgreet. По този начин се създава нова променлива на базата на текущата стойност на $greet и й се присвоява стойността hello!. По този начин можете да създадете динамични променливи и да им присвоите стойност.
Също така произволни данни съхранени в променлива, могат да станат име на функция

Както споменахме по-рано, променливите в PHP се декларират при тяхното използване и не е необходимо да се декларира типът на данните им. В някой случай обаче може да ви се наложи да създадете тип на променлива. Това обикновенно става в случайте, когато искате променливата да съхранява данни само от определен тип. Тогава трябва изрично да зададете тип на данните, които ще се съхраняват в променливата. За тази цел PHP предоставя 2 функции settype() и gettype(). Функцията gettype() извлича типа на променливата, а функцията settype() задава типа на дадена променлива. В следващата част ще разгледаме тези две функции по-подробно.

/ Трябва да сте регистриран за да напишете коментар /