Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Преобразуване на типовете данни в PHP
  1. Type Casting, Type Juggling, Type Conversion
     
Автор  plamenSm (29.03.2008 11:43)  съобщение до автора
Погледнат  1690 пъти  добави към любими
Оценка  добави коментар
Гласове  --  изпрати на приятел
Коментари  (0)  абонирай се за PHP
    Страница 1 / 1

 



( type Juggling, type Casting, type Conversion )

PHP не поддържа изрично дефиниране на типа при декларирането на променлива. Типът на променливата зависи от контекста, в който се използва. С други думи, ако присвоите стринг на променливата $var, $var става от тип стринг. Ако в последствие присвоите целочислена стойност на $var, то тя става целочислена променлива.

В този урок ще разгледаме манипулациите с типовете данни в PHP. Става въпрос за начините по кито можем да укажем на PHP както какъв тип да третира дадени данни, както и за начините на преобразуване на един тип в друг. Преобразуването на типове е допустимо във всички възможни комбинации, от конвертиране на integer във float, масиви в обекти ... до стринг в двоични (binary) данни в PHP 5.2.1. Това е начин да се избегне извикането на различни функции и в крайна сметка скрипта да стане по-малък и бърз.

Пример за преобразуване на тип:

CODE
1
2
3
<?php
$szMyString = (string) 5;
?>

Тук $szMyString ще приеме стойност "5" като стринг макар, че няма кавички около ‘5’. Това е начина за промяна на типа на данни, но нека да видим в какви ситуации бихме могли да го използваме.

Има различни случаи в които преобразуването на типа е много удобен начин за създаването на кратък, бърз и ясен код. Нека да приемем, че ни е необходима функция, която проверява синтаксиса на URL. В тази примерна функция е използван малък регулярен израз и стандартната функция preg_patch() за да провери дали подадения URL започва с “http://”

CODE
1
2
3
4
5
6
<?php
function validateLink($szURL)
{
   
return preg_match('/^http:\/\/.*$/i', $szURL);
}
?>

В този случай preg_patch() обаче връща 1 или 0 вместо true или false, както би ни се искало. За да се придържаме към стандарта ние бихме искали функцията която прави проверка да връща логическа стойност. Тук конвертирането на типа е идеалното решение:

CODE
1
2
3
4
5
6
<?php
function validateLink($szURL)
{
   
return (boolean) preg_match('/^http:\/\/.*$/i', $szURL);
}
?>

Просто добавяме (boolean) и функцията започва да връща коректно само логически стойностти. Сега можем да сме сигурни, че резултатът може да бъде само true или false, тоест можем да използваме функцята в логиески изрази.

За съжаление в PHP има много вградени функции, които в различни ситуации връщат тазлични типове данни. Това е доста необичаен подход и усложнява програмирането, но преобразуването типа на резултата обикновено може да реши проблема.

Да видим няколко примера за преобразуване на типове:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
/* Приема стойност: "5" */
$mVar1 = (string) 5;

/* Приема стойност: true */
$mVar2 = (boolean) 'Test';

/* Приема стойност: 10 */
$mVar3 = (integer) 10.55;

/* Приема стойност: true */
$mVar4 = (boolean) (float) 15;

/* Приема стойност от тип object заедно със $Item = true */
$mVar5 = (object) array('Item' => (boolean) 0);

/* Приема стойност от тип array */
$mVar6 = (array) $mVar5;
?>

Първите 4 примера са напълно ясни. Последните два обаче не съвсем. Общо взето преобразуването на обекти в масиви и обратно е по-сложно.

По-ясно е конвертирането между едномерен асоциативен масив и обект. Можем да използваме синтаксис за достъп до public променлива в обект или до елемент от масив. Ето как можем да получим стойноста на Item от горния пример:

CODE
1
2
3
4
5
<?php
echo $mVar5->Item; // Като public променлива

echo $mVar6['Item']; // Като елемент от асоциативен масив
?>

Обектноориентираното програмиране става все по-популярно, а обектите в PHP все повече се предпочитат пред масивите, но едва ли скоро масивите ще излязат от употреба поради богатия набор от функции за работа с тях.

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


Източник: talkphp.com



   


Ключови думи: PHP typecasting преобразуване на типове данни


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008