php数据类型之间转换代码
1、PHP字符串转换
数值转字符串就是按照数值原本的格式转换;字符串转换为数字,转换后的数字是从字符串开始部分的数值型字符串,数值型字符串包括正负值和用科学计数法表示的数字。
【示例】
请把以下代码复制内容到剪贴板
<?php教程
$number=intval("5.6abc"); //5
$number=(float)"+5.6abc"; //5.6
$number=floatval("-1.2e3f4g5"); //-1.2e3
$result="12.3xy45"-6; //6.3
$result="xy1234"/5; //0
$result="1.2.3.4"*5; //6
$result=1+"-1.3e3"; //-1299
?>
•布尔类型转字符串,false转空字符串"",true转"1"
•数组转字符串,是"Array"
•对象转字符串,是"Object"
•资源转字符串,是"Resource id#1"
2、PHP布尔型
以下类型转换为布尔类型的false,其他的转换为true
0转换为false
0.0转换为false
空白字符""和字符串"0"转换为false
没有成员的数组array()转换为false
NULL转换为false
3、PHP数字(整形和浮点型之间可以相互转化)
•整形转换为浮点型:由于浮点型的精度范围远大于整形,所以转换后的数值精度不会改变。
•浮点型转换为整形:讲自动舍弃小树部分,只保留整数部分。注:如果一个浮点型超过整数取值的有效范围,其结果将是无法确定的(整数的最大值约是2.147e9)。
【示例】
请把以下PHP代码复制内容到剪贴板
<?php
$real_num=3.1e9;
echo $real_num;
echo (int)$real_num; //输出一个不确定的值,因为溢出的部分已经丢失。
?>
4、PHP数组
布尔、数字和字符串转换为数组,将得到一个包含一个该类型数据元素的数组
•NULL转换为数组,会得到一个空数组
•对象转换为一个数组,所得到的数组键名为对象属性名,值为对应对象属性的值
/*数据类型之间相互转换
* 一种是强制转换
* setType(变量,类型); //int,integer,float,double等等。
* 这个函数将原变量的类型改变,用var_dump();可以查看变量
*
* 在赋值前使用(类型)的形式,不会改变原变量的类型
* $a=(int)"123abc";
*
* $变量=intval(变量或值);
* $变量=floatval(变量或值);
* $变量=stringval(变量或值);
*
* 注意:整型在内存中占4个字节 2.147e9
* 浮点型在内存中占8个字节
*
*
* 一种是自动转换(最常用方式),变量会更具运行环境自动转换
* 与变量和类型有关的一些常用函数
* isset();//判断一个变量是否存在,值如果是null也表示空。
* empty();//判断一个变量是否为空 "",null
* unset();//删除一个变量
* setType();//设置一个变量类型
* getType();//获取一个变量类型 var_dump();获取类型和值
*
* 变量类型测试函数
* is_bool();//判断是否为布尔型
* is_int() is_integer() is_long()//判断是否是整型
* is_float(), is_double() is_real()//...
* is_array()
* is_object()
* is_resource()
* is_null()
* is_scalar()//判断是否是标量
* is_numberic()//判断是否是任何一种数字,或数字字符串
* is_callable()//判断是否是有效的函数名
* 常量的声明与使用
* 1.常量是一个简单值的标识符
* 2.常量定义后不能再改变它的值,也不能使用unset()或其他的函数取消
* 3.常量可以不用理会变量范围的规则而在任何地方都可以定义和访问
* 4.常量使用define("常量名",值);
* 5.常量名在声明和使用时都不使用"$"
* 6.常量名称习惯都使用大写
* 7.常量的值只能用标量类型(int,float,bool,string)
* 8.常量一定要在声明时就给值
* 9.defined("常量");//判断常量是否存在
*
* 预定义常量和魔术常量
* echo __FILE__;//输出当前文件名称目录_魔术常量
* echo CASE_LOWER;//输出固定的值_预定义常量
*
*/
//这个函数将原变量的类型改变,用var_dump();可以查看变量
$str="100.12345abc";
setType($str,int);
var_dump($str);
//在赋值前使用(类型)的形式
$str="100.12345abc";
$a=(int)$str;
var_dump($a);//输出int(100)
var_dump($str);//输出值不变,"100.12345abc"
//如果字符串不是以数字开头,则转换成0
//不同类型运算
$a=10;
$b="100abc";
$c=true;
$d=12.34;
$sum=$a+$c;//布尔型自动转换成1,结果为11
$sum=$a+$b;//结果为110
$sum=$a+$b+$c;//结果为111
$sum=$a+$b+$c+$d;//结果为123.34,因为浮点型内存空间大,小内存转大内存。
//判断是否是数组
$a=array("one","two",1,3,6,8);
if(is_array($a)){
print_r($a);//打印数组
}else{
echo $a;
}
//定义常量,使用常量
define("home","this is a home");
$a=100;
function demo()
{
global $a;//因为$a是全局变量所以要用全局标记调用
echo $a;
echo home;//常量可以不用理会范围,直接访问或者定义
}
demo();
//判断常量是否存在
if(defined("home")
{
echo home;
}
else
{
define("home","this is a home");
}
filemtime() 函数返回文件内容上次的修改时间。
若成功,则时间以 Unix 时间戳的方式返回。若失败,则返回 false。
语法
filemtime(filename)
$path = "a.txt";
if( file_exists( $path ) ){
$filetimes = filemtime($path);
$cutime =time();
$uptime = 900;//15分钟生成一次
if ($cutime-$filetimes>$uptime)
{
$h = fopen( $path,'w+' );
fwrite( $h,'到了更新的时间' );
fclose( $h );
}
}
else
{
$h = fopen( $path,'w+' );
fwrite( $h,'文件不存在' );
fclose( $h );
}
PHP $_SERVER详细用法分析
Argument Result
PHP_SELF Returns the path and filename of the current script
SERVER_PROTOCOL Returns the name and revision of the page-requested protocol
REQUEST_METHOD Returns the request method used to access the page
REQUEST_TIME Returns the timestamp from the beginning of the request
DOCUMENT_ROOT Returns the root directory of the current script
HTTP_REFERER Returns the page address that referred to the current page
HTTP_USER_AGENT Returns the user agent of the header from the current request
REMOTE_ADDR Returns the IP address of the current user
REMOTE_PORT Returns the port of the user's machine that is accessing the page
SCRIPT_FILENAME Returns the absolute filename from the current script
SCRIPT_NAME Returns the path of the current script
<?php教程 if ($_SERVER['REQUEST_METHOD'] == 'GET') { ?>
<form action="<?php echo $_SERVER['SCRIPT_NAME'] ?>" method="post">
What is your first name?
<input type="text" name="first_name" />
<input type="submit" value="Say Hello" />
</form>
<?php } else {
echo 'Hello, ' . $_POST['first_name'] . '!';
}
?>
获取用户的IP地址
<?php
$address = $_SERVER['REMOTE_ADDR'];
$referer = $_SERVER['HTTP_REFERER'];
$browser = $_SERVER['HTTP_USER_AGENT'];$file = fopen("log.html", "a");
$time = date("H:i dS F");
fwrite( $file, "<b>Time:</b> $time<br>" );if( $address != null)
{
fwrite( $file, "<b>IP Address:</b> $address <br>");
}if( $referer != null)
{
fwrite( $file, "<b>Referer:</b> $referer<br>");
}fwrite( $file, "<b>Browser:</b> $browser<br/><hr>");
fclose($file);
?>
脚本显示方法
<?php
$lastmod = filemtime($_SERVER['SCRIPT_FILENAME']);echo 'file was updated on ' . date('l d F Y, at H:i:s T', $lastmod);
?>
获取服务器时间
<?php
$lastmod = filemtime($_SERVER['SCRIPT_FILENAME']);echo 'This file was last updated on '
. date('l d F Y, at H:i:s T', $lastmod)
. '.';
?>
显示本月,上月,今天,今年以及各时间起点与终点的做法
mktime() 函数返回一个日期的 Unix 时间戳。
参数总是表示 GMT 日期,因此 is_dst 对结果没有影响。
参数可以从右到左依次空着,空着的参数会被设为相应的当前 GMT 值。
PHP Date() 函数
PHP Date() 函数可把时间戳格式化为可读性更好的日期和时间。
语法
date(format,timestamp)参数 描述
format 必需。规定时间戳的格式。
timestamp 可选。规定时间戳。默认是当前的日期和时间。
上面我们简单的讲了一下mktime与date函数,下面我们就来看看利用他们实例今天,上月,下月等日期计算
$t = time();
$t1 = mktime(0,0,0,date(“m”,$t),date(“d”,$t),date(“Y”,$t));
$t2 = mktime(0,0,0,date(“m”,$t),1,date(“Y”,$t));
$t3 = mktime(0,0,0,date(“m”,$t)-1,1,date(“Y”,$t));
$t4 = mktime(0,0,0,1,1,date(“Y”,$t));
$e1 = mktime(23,59,59,date(“m”,$t),date(“d”,$t),date(“Y”,$t));
$e2 = mktime(23,59,59,date(“m”,$t),date(“t”),date(“Y”,$t));
$e3 = mktime(23,59,59,date(“m”,$t)-1,date(“t”,$t3),date(“Y”,$t));
$e4 = mktime(23,59,59,12,31,date(“Y”,$t));
参考一下关于mktime()函数
参数 | 描述 |
---|---|
hour | 可选。规定小时。 |
minute | 可选。规定分钟。 |
second | 可选。规定秒。 |
month | 可选。规定用数字表示的月。 |
day | 可选。规定天。 |
year | 可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。 |
is_dst |
可选。如果时间在日光节约时间(DST)期间,则设置为1,否则设置为0,若未知,则设置为-1。 自 5.1.0 起,is_dst 参数被废弃。因此应该使用新的时区处理特性。 |
//测试
echo date(“当前 Y-m-d H:i:s”,$t).” $t<br>”;
echo date(“今天起点 Y-m-d H:i:s”,$t1).” $t1<br>”;
echo date(“今月起点 Y-m-d H:i:s”,$t2).” $t2<br>”;
echo date(“上月起点 Y-m-d H:i:s”,$t3).” $t3<br>”;
echo date(“今年起点 Y-m-d H:i:s”,$t4).” $t4<br>”;
//测试
echo date(“今天终点 Y-m-d H:i:s”,$e1).” $e1<br>”;
echo date(“今月终点 Y-m-d H:i:s”,$e2).” $e2<br>”;
echo date(“上月终点 Y-m-d H:i:s”,$e3).” $e3<br>”;
echo date(“今年终点 Y-m-d H:i:s”,$e4).” $e4<br>”;
结果:
当前 2011-05-24 15:42:55 1306222975
今天起点 2011-05-24 00:00:00 1306166400
今月起点 2011-05-01 00:00:00 1304179200
上月起点 2011-04-01 00:00:00 1301587200
今年起点 2011-01-01 00:00:00 1293811200
今天终点 2011-05-24 23:59:59 1306252799
今月终点 2011-05-31 23:59:59 1306857599
上月终点 2011-04-30 23:59:59 1304179199
今年终点 2011-12-31 23:59:59 1325347199
看一下date函数
参数 | 描述 |
---|---|
format | 必需。规定时间戳的格式。 |
timestamp | 可选。规定时间戳。默认是当前的日期和时间。 |
PHP 日期 - 格式化日期
date() 函数的第一个参数规定了如何格式化日期/时间。它使用字母来表示日期和时间的格式。这里列出了一些可用的字母:
d - 月中的天 (01-31)
m - 当前月,以数字计 (01-12)
Y - 当前的年(四位数)
您可以在我们的 PHP Date 参考手册中,找到格式参数中可以使用的所有字母。
全局变量和“global”关键字
PHP默认定义了一些“超级全局(Superglobals)”变量,这些变量自动全局化,而且能够在
程序的任何地方中调用,比如$_GET和$ _REQUEST等等。它们通常都来自数据或者其他外部数
据,使用这些变量通常是不会产生问题的,因为他们基本上是不可写的。
但是你可以使用你自己的全局变量。使用关键字“global”你就可以把全局数据导入到一个
函数的局部范围内。如果你不明白“变量使用范围”,请你自己参考PHP手册上的相关说明。
下面是一个使用“global”关键字的演示例子:
<?php教程
$my_var = 'Hello World';
test_global();
function test_global() {
// Now in local scope
// the $my_var variable doesn't exist
// Produces error: "Undefined variable: my_var"
echo $my_var;
// Now let's important the variable
global $my_var;
// Works:
echo $my_var;
}
?>
正如你在上面的例子中看到的一样,“global”关键字是用来导入全局变量的。看起来它工
作的很好,而且很简单,那么为什么我们还要担心使用“global”关键字来定义全局数据呢
我来给处入行的人讲解一下全局变量global的使用,”全局变量“,这个名词中的全局两个
字已经告诉我们这个变量在各个地方都能用,先看一个实例:
<?php
$a = 1;
$b = 2;function Sum()
{
global $a, $b; //在里面声明为全局变量$b = $a + $b;
}Sum();
echo $b;
?>
结果: 3
如果没有全局变量global在方法内是不能获得$a,$b值的,所以在方法里面想用外面的变量就
需要先声明这个变量为全局变量,这样就可以使用了,很方便吧。
<?PHP
$w3sky = 1;
$w3sky2 = 2;function Sum()
{
global $w3sky, $w3sky2;$w3sky2 = $w3sky + $w3sky2;
}Sum();
echo $w3sky2;
?>
以上脚本的输出将是“3”。在函数中申明了全局变量 $w3sky 和 $w3sky2,任何变量的所有
引用变量都会指向到全局变量。对于一个函数能够申明的全局变量的最大个数,PHP 没有限
制。
在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。前面的例子
可以写成:
例子 使用 $GLOBALS 替代 global
<?PHP
$w3sky = 1;
$w3sky2 = 2;function Sum()
{
$GLOBALS['w3sky'] = $GLOBALS['w3sky'] + $GLOBALS['w3sky2'];
}Sum();
echo $w3sky2;
?>
在 $GLOBALS 数组中,每一个变量为一个元素,键名对应变量名,值对应变量的内
容。$GLOBALS 之所以在全局范围内存在,是因为 $GLOBALS 是一个超全局变量。以下范例显
示了超全局变量的用处:
例子 演示超全局变量和作用域的例子
<?PHP
function test_global()
{
// 大多数的预定义变量并不 "super",它们需要用 'global' 关键字来使它们在函
数的本地区域中有效。
global $HTTP_POST_VARS;echo $HTTP_POST_VARS['name'];// Superglobals 在任何
范围内都有效,它们并不需要 'global' 声明。Superglobals 是在 PHP 4.1.0 引入的。
echo $_POST['name'];
}
?>global 也就是说在一个文件里 只要你声明为global $db 那么在声明的下面 你就
可以引用这个$db了
<?php
function SayMyABCs2()
{
global $count;
while($count<10)
{
print(chr(ord('A')+$count));
$count=$count+1;
}
print("<br>Now I know $count letters<br>");
}
$count=0;
SayMyABCs2();
$count=$count+1;
print("Now I've made $count function call(s).<br>");
SayMyABCs2();
$count=$count+1;
print("Now I've made $count function call(s).<br>");
?>
output:
ABCDEFGHIJ //第一次循环依次打印10个大写字母
Now I know 10 letters
Now I've made 11 function call(s). //第二次由于条件大于10则不执行循环Now I know 11 letters
Now I've made 12 function call(s).
由于global对变量的声明,现在只有一个$count变量,它在函数内和函数外都被增值了,当
第二次调用SayMyABCs2()时,$count已经是11了,因此根本不会进入打印字母的循环。在函
数内定义的变量的作用域默认情况下是局限于该函数的,使用global声明,就可以通知PHP,
现在需要让一个变量名和它在函数外环境中有同样的含义。声明格式:global
$count1,$count2,...,$countn;
global在另一方面又很有用,尤其是因为PHP提供了一些变量,可在其代码执行之前绑到每个
页面上,它能够让函数看到这些变量,而省去了每次在调用中把它们作为参数传入函数这一
麻烦
相关文章
使用PHP+JavaScript将HTML页面转换为图片的实例分享
这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19php中浮点型(float)和整型(integer)数据类型详解
文章分析了关于php中浮点型(float)和整型(integer)数据类型的用法区别以及在那种情况下会出现数据长度不够。 取值只能为True或者False,当其他类型转化为boolean类...2016-11-25- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- 在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 本篇文章主要是对c#中数据类型占用的字节数进行了详细的介绍。需要的朋友可以过来参考下,希望对大家有所帮助...2020-06-25
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- 这篇文章主要介绍了Javascript类型转换的规则实例解析,涉及到javascript类型转换相关知识,对本文感兴趣的朋友一起学习吧...2016-02-27
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
- 微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31
- 今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下把普通照片快速转换成卡通效果的教程,各位想知道具体制作步骤的使用者们,那么下面就快阿里跟着小编一起看一...2016-09-14
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
- 小编分享了一段简单的php中文转拼音的实现代码,代码简单易懂,适合初学php的同学参考学习。 代码如下 复制代码 <?phpfunction Pinyin($_String...2017-07-06