PDA

View Full Version : تبدیل داده ها



mmehdyt
پنج شنبه 04 مرداد 1386, 09:28 صبح
برای تبدیل داده های عددی و رشته ای به هم از چه تابعی باید استفاده کرد؟

hidensoft
پنج شنبه 04 مرداد 1386, 10:23 صبح
شما می خوای نوع متغیر رو تغییر بدی ؟
اگه جواب شما مثبت باشه باید بگم که PHP بطور خود کار نوع متغیر رو شناسایی می کنه و نیازی نیست که شما تایین کنی نوعش چی هست.

mmehdyt
پنج شنبه 04 مرداد 1386, 10:59 صبح
می خوام توی دیتا بیس یه عدد خیلی بزرگ رو به صورت رشته بذارم تا فضای کمتری بگیره.
برای این کار وقتی که می خوام عدد رو وارد دیتابیس کنم باید تبدیل به رشته بشه و وقتی می خوام باز یابیش کنم باید تبدیل به عدد بشه. مشکل من همینه. حالا شما نمی دونید چطوری؟

tabib_m
پنج شنبه 04 مرداد 1386, 12:05 عصر
می خوام توی دیتا بیس یه عدد خیلی بزرگ رو به صورت رشته بذارم تا فضای کمتری بگیره.
یعنی چی؟ بالفرض هم که رشته ها کمتر از اعداد فضا اشغال کنن (که من تا حالا نشنیده بودم) خوب میتونی نوع فیلد رو عوض کنی.
نیازی به تبدیل و ... نیست!

در هر صورت ، بهترین کار اینه که باز هم کاری به نوع فیلد نداشته باشی، یعنی از همون نوع عددی استفاده کن ، و نگران فضا نباش :) (میتونی مثلا از bigint استفاده کنی)

موفق باشید.

moohssenn
پنج شنبه 04 مرداد 1386, 21:57 عصر
سلام . همان طور که اساتید گرامی راهنمائی نمودند میتونید مشکلتون رو حل کنید .
این مطالب اینجا برات میزارم دونستنش ضرر نداره :

موضوع : کار با داده ها در php
مانند اکثر زبانهای برنامه نویسی زبان برنامه نویسی php نیز از یک سری داده پشتیبانی میکند .
اما به دلیل اینکه php وقتی به یک نوع داده ای برخورد میکند خودش اقدام به تشخیص آن میکند این مورد کمتر مورد توجه برنامه نویسان این زبان قرار گرفته است . در این بخش میخواهم شما را با نوشتن نوع داده ها , تشخیص و تغییر نوع آنها آشنا کنم .
برخی از داده هایی که در زبان php پشتیبانی میگردد عبارتند از :
Integer , Double , String , Boolean , Array ,float و ....

مثالا اگر شما برای مقدار دهی یک عدد به صورت زیر عمل کنید :

$Number = 12 ;


زبان php مقدار متفیر فوق را به عنوان Integer در نظر میگیرد اما اگر شما برای تعریف همین متغیر به صورت زیر عمل نمائید :

$Number = “12”;


زبان php این متغیر را به عنوان نوع String در نظر خواهد گرفت . علتشم که واضحه , برای تعریف این متغیر به دلیل گذاشتن Double qutetion این متغیر به صورت String در نظر گرفته شده است .

تعریف داده ها :
همانطور که در بالا اشاره کردم شما میتونید با استفاده از همان قاعده گفته شده نوع داده ای را مشخص کنید علاوه بر اون این امکان وجود دارد که شما این کار رو به صورت مستقیم انجام دهید برای این منظور به مثال زیر توجه کنید :

$Number = (integer) 12;
یا
$Number = (float) 17.15;

در مورد تعریف نوع داده ای string نیازی به این کار نیست و با همان double qutetion آنها تعریف میشوند . این روش تعریف داده ها برای Integer , Double , Boolean , float قابل استفاده است .

تشخیص نوع داده ای :
برای تشخیص نوع داده ای یک متغیراز تابع gettype($variable)
استفاده میکنیم . مثلا :

$Number = 12 ;
Echo gettype($Number);


که خروجی این مثال مقدار Integer است و یا :

$Number = 12.5 ;
Echo gettype($Number);


دارای مقدار double میباشد .

علاوه براین تابع ( gettype ) روش دیگری هم برای تشخیص نوع داده وجود دارد که با استفاده از توابع زیر این عمل اتفاق میافتد :


is_string ( $variable );
is_int ( $variable );
is_double ( $variable );
و .....

خروجی این توابع False یا True میباشد . سایر توابع از این دست رو میتونید از راهنمای php استخراج کنید .

تبدیل نوع داده ها به یکدیگر :
این مبحث بسیار طولانی میباشد و خلاصه ای از مطالب رو اینجا اشاره میکنم .

ساده ترین روش برای این منظور استفاده از تابع settype است , روش استفاده از اون به صورت زیر میباشد :

$No1= (integer) 19;

;(Settype ( $No1 , “float”


در این مثال نوع مقدار No1 بدون هیچ گونه تغییری به نوع float تبدیل شده است . با استفاده از همین روش میتوان مقادیر مختلف را به یکدیگر تبدیل کرد . اما گاهی اوقات عمل تبدیل نوع داده ها با تغییراتی همراه است . مثلا :

$foo = “12asdasd”;

settype($foo, "integer");


مقدار foo$ جدید برابر 1 میباشد .

و یا :

$bar = true;

settype($bar, "string");


مقدار bat$ جدید 1 است .

مسلما این مطالب کامل نیست و باید با کمی مطالعه راهنمای php به تمامی نکات این عمل آشنا بشوید .

تنها نکته ای که باید در اینجا به اون اشاره کنم استفاده از === ( سه تا علامت مساوی ) است که به کمک آن علاوه بر بررسی مقدار دو متغیر , نوع دو متغیر را نیز بررسی میکند و در صورت برقراری هر دو شرط مقدار True را باز میگرداند .

$No1 = (double) 12;
$No2 = (integer) 12 ;

If ($No1 === $No2 ) ;
Echo ‘Ok’;


در این مثال شرط گذاشته شده برقرار نمیباشد .

امیدوارم مفید باشه

mmehdyt
جمعه 05 مرداد 1386, 09:09 صبح
یعنی چی؟ بالفرض هم که رشته ها کمتر از اعداد فضا اشغال کنن (که من تا حالا نشنیده بودم) خوب میتونی نوع فیلد رو عوض کنی.
نیازی به تبدیل و ... نیست!

در هر صورت ، بهترین کار اینه که باز هم کاری به نوع فیلد نداشته باشی، یعنی از همون نوع عددی استفاده کن ، و نگران فضا نباش :) (میتونی مثلا از bigint استفاده کنی)

موفق باشید.
یعنی این عدد هم اندازه ی نوع رشته ایش فضا می گیره؟
89563285354644945211653211

oxygenws
جمعه 05 مرداد 1386, 11:13 صبح
یعنی این عدد هم اندازه ی نوع رشته ایش فضا می گیره؟
89563285354644945211653211
اگر فرض کنیم نوع دادی ای با این حجم برای عدد داشته باشیم، نوع عددی خیلی خیلی کمتر از رشته ای جا می گیره :)

cybercoder
جمعه 05 مرداد 1386, 11:24 صبح
یعنی این عدد هم اندازه ی نوع رشته ایش فضا می گیره؟
89563285354644945211653211



BIGINT

BIGINT provides 8 bytes of storage for integer values.

Syntax

BIGINT
Corresponding Compile-Time Java Type

java.lang.Long

JDBC Metadata Type (java.sql.Types)

BIGINT

Minimum Value

-9223372036854775808 (java.lang.Long.MIN_VALUE)

Maximum Value

9223372036854775807 (java.lang.Long.MAX_VALUE)

mmehdyt
شنبه 06 مرداد 1386, 11:21 صبح
ممنون از همه ی دوستان.
این کد رو نمی فهمم لطفا یه توضیح بدید:

BIGINT

BIGINT provides 8 bytes of storage for integer values.

Syntax

BIGINT
Corresponding Compile-Time Java Type

java.lang.Long

JDBC Metadata Type (java.sql.Types)

BIGINT

Minimum Value

-9223372036854775808 (java.lang.Long.MIN_VALUE)

Maximum Value

9223372036854775807 (java.lang.Long.MAX_VALUE)

cybercoder
شنبه 06 مرداد 1386, 11:42 صبح
یعنی
کمترین مقداری که BigInt می تونه بگیره -9223372036854775808
و بیشترینش 9223372036854775807

موفق باشید

mmehdyt
یک شنبه 07 مرداد 1386, 09:25 صبح
ممنون از همگی دوستان.
چطور می تونم یه عدد رو به مبنای 8 یا 16 ببرم؟

cybercoder
یک شنبه 07 مرداد 1386, 10:20 صبح
قبل از پرسش وب رو جستجو کنید در ضمن برای این موضوع بهتر بود یه تاپیک جدید می زدید.

http://www.tonymarston.net/php-mysql/converter.html

موفق باشید.