❶ php数据类型判断函数有哪些
数据类型有三种:
1.标量数据类型
标量数据类型包括以下几种。
(1)boolean:布尔型
布尔变量是PHP变量中最简单的。它保存一个True或者False值。其中True或者False是PHP的内部关键字。设定一个布尔型的变量,只需将True或者False赋值给该变量
(2)string:字符串
字符串是连续的字符序列,字符串中的每个字符只占用一个字节。在PHP中,定义字符串有3种方式:
单引号方式,
双引号方式,
Heredoc方式。
(3)integer:整数
整数数据类型只能包含整数。这些数据类型可以是正数或负数。在32位的操作系统中,有效的范围是−2 147 483 648~+2 147 483 647。
(4)double:浮点数
浮点数据类型可以用来存储数字,也可以保存小数。它提供的精度不整数大得多。在32位的操作系统中,有效的范围是1.7E-308~1.7E+308。
2.复合数据类型
复合数据类型包括以下两种。
(1)array:数组
可以是二维、三维或者多维,数组中的各元素可以是string、integer或double,也可以是array。
(2)object:对象类型
3.特殊数据类型
特殊数据类型包括以下两种。
(1)resource:资源
资源是PHP内的几个函数所需要的特殊数据类型,由编程人员来分配。
(2)null:空值
空值是最简单的数据类型。表示没有为该变量设置任何值,另外,空值(NULL)不区分大小写。
❷ 高分求PHP面向对象系统!
1.面向对象的概念
2.什么是类,什么是对象,类和对象这间的关系
3.什么是面向对象编程呢?
4.如何抽象出一个类?
5.如何实例化对象?
6.如何去使用对象中的成员?
7.特殊的引用“$this”的使用
8.构造方法与析构方法
9.封装性
10.__set()、 __get()、 __isset()、 __unset()四个方法的应用
11.类的继承
12.多态的应用
13.重载新的方法
14.访问类型
15.静态成员的使用
16.final关键字的应用
17.__toString()方法
18.克隆对象
19.__call处理调用错误
20.自动加载类
21.把对象串行化
22.抽象方法和抽象类
23.php5接口技术
1.面向对象的概念
面向对象编程(Object Oriented ProgrammingOOP面向对象程序设计)是一种计算机编程架构,OOP的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成,OOP达到了软件工程的三个目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。面向对象一直是软件开发领域内比较热门的话题,首先,面向对象符合人类看待事物的一般规律。其次,采用面向对象方法可以使系统各部分各司其职、各尽所能。为编程人员敞开了一扇大门,使其编程的代码更简洁、更易于维护,并且具有更强的可重用性。有人说PHP不是一个真正的面向对象的语言,这是事实。PHP 是一个混合型语言,你可以使用OOP,也可以使用传统的过程化编程。然而,对于大型项目,你可能需要在PHP 中使用纯的OOP去声明类,而且在你的项目里只用对象和类。这个概念我先不多说了,因为有很多朋友远离面向对象编程的主要原因就是一接触面向对象概念的时候就理解不上去,所以就不想去学下去了。等读者看完整体内容后再去把概念搞明白吧。
2.什么是类,什么是对象,类和对象这间的关系
类的概念:类是具有相同属性和服务的一组对象的集合。它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性说明和服务说明两个主要部分。
对象的概念:对象是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组服务组成。从更抽象的角度来说,对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。客观世界是由对象和对象之间的联系组成的。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类。类描述了一组有相同特性(属性)和相同行为(方法)的对象。
上面大概就是它们的定义吧,也许你是刚接触面向对象的朋友, 不要被概念的东西搞晕了,给你举个例子吧,如果你去中关村想买几台组装的PC机,到了那里你第一步要干什么,是不是装机的工程师和你坐在一起,按你提供的信息和你一起完成一个装机的配置单呀,这个配置单就可以想象成是类,它就是一张纸,但是它上面记录了你要买的PC机的信息,如果用这个配置单买10台机器,那么这10台机子,都是按这个配置单组成的,所以说这10台机子是一个类型的,也可以说是一类的。那么什么是对象呢,类的实例化结果就是对象用这个配置单配置出来(实例化出来)的机子就是对象,是我们可以操作的实体,10台机子,10个对象。每台机子都是独立的,只能说明他们是同一类的,对其中一个机做任何动作都不会影响其它9台机器,但是我对类修改,也就是在这个配置单上加一个或少一个配件,那么装出来的9个机子都改变了,这是类和对象的关系(类的实例化结果就是对象)。
3.什么是面向对象编程呢?
就不说他的概念,如果你想建立一个电脑教室,首先要有一个房间,房间里面要有N台电脑,有N张桌子, N把椅子,白板,投影机等等,这些是什么,刚才咱们说了,这就是对象,能看到的一个个的实体,可以说这个电脑教室的单位就是这一个个的实体对象,它们共同组成了这个电脑教室,那么我们是做程序,这和面向对象有什么关系呢?开发一个系统程序和建一个电脑教室类似,你把每个独立的功能模块抽象成类,形成对象,由多个对象组成这个系统,这些对象之间都能够接收信息、处理数据和向其它对象发送信息等等相互作用。就构成了面向对象的程序。
4.如何抽象出一个类?
上面已经介绍过了,面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,所以我们首先要做的就是如何来声明类,做出来一个类很容易,只要掌握基本的程序语法定义规则就可以做的出来,那么难点在那里呢?一个项目要用到多少个类,用多少个对象,在那要定义类,定义一个什么样的类,这个类实例化出多少个对象,类里面有多少个属性,有多少个方法等等这就需要读者通过在实际的开发中就实际问题分析设计和总结了。
类的定义:
class 类名{
}
使用一个关键字class和后面加上一个你想要的类名以及加上一对大括号, 这样一个类的结构就定义出来了,只要在里面写代码就可以了,但是里面写什么? 能写什么?怎样写才是一个完整的类呢?上面讲过来,使用类是为了让它实例出对象来给我们用,这就要知道你想要的是什么样的对象了,像上面我们讲的一个装机配置单上写什么,你装出来的机子就有什么。比如说,一个人就
是一个对象,你怎么把一个你看好的人推荐给你们领导呢?当然是越详细越好了:
首先,你会介绍这个人姓名、性别、年龄、身高、体重、电话、家庭住址等等。
然后,你要介绍这个人能做什么,可以开车,会说英语,可以使用电脑等等。
只要你介绍多一点,别人对这个人就多一点了解,这就是我们对一个人的描述, 现在我们总结
一下,所有的对象我们用类去描述都是类似的,从上面人的描述可以看到, 做出一个类来,从定义的角度分两部分,第一是从静态上描述,第二是从动态上描述,静态上的描述就是我们所说的
属性,像上面我们看到的,人的姓名、性别、年龄、身高、体重、电话、家庭住址等等。动态上也就是人的这个对象的功能,比如这个人可以开车,会说英语,可以使用电脑等等,抽象成程序时,我们把动态的写成函数或者说是方法,函数和方法是一样的。所以,所有类都是从属性和方法这两方面去写,属性又叫做这个类的成员属性,方法叫做这个类的成员方法。
class 人{
成员属性:姓名、性别、年龄、身高、体重、电话、家庭住址
成员方法:可以开车,
❸ 如何指定 PHP 数据类型
php 函数的参数类型可以指定为类名或数组类型array,比如 这样是对的public function Right( My_Class $a, array $b ) 这样是错的public function Wrong( string $a, boolean $b ) 如果需要其他类型
❹ php 中如何得到一个对象的类型
得到一个对象的类型,使用gettype()函数:
<?php
echogettype(1);//输出integer
echogettype(array());//输出array
得到一个对象是哪个类的实例,使用get_class()函数:
<?php
$o=newstdClass();
echoget_class();//输出stdClass
得到一个类或对象的方法和属性,要使用反射:
<?php
classMyClass{
public$var;
publicfunctionfoo(){}
}
$ref=newReflectionClass('MyClass');
$ref->getProperties();//会返回一组对象,用法参考PHP手册
$ref->getMethods();//会返回一组对象,用法参考PHP手册
$obj=newMyClass();
$ref=newReflectionObject($obj);
$ref->getProperties();
$ref->getMethods();
❺ 该学习哪些PHP函数PHP常用函数
以下是记php的常用函数,网上转载的:
php
//===============================时间日期===============================
//y返回年最后两位,Y年四位数,m月份数字,M月份英文。d月份几号数字,D星期几英文
$date=date("Y-m-d");
$date=date("Y-m-d H:i:s");//带时分秒
//include,include_once.require,require_once
//require("file.php") 在PHP程序执行前就会先读入require所指定引进的文件,如出现错误是致命的。
//include("file.php") 可以放在PHP程序的任何位置,PHP程序执行到时才读入include指定引入的文件,如出现错误会提示
//===============================输出打印===============================
//sprintf("%d","3.2") ;//只格式化,返回格式化后的字符串,不输出。
//printf("%d","3.2") ;//即格式化,又输出
//print("3.2") ;//只输出
//echo "nihao","aa";//可以输出多个字符串
//print_r(array("a","b","c"));//将数组的键值与元素依次显示
//===============================常用字符串函数===============================
//获取字符串长度,有多少个字符,空格也算
$str=" sdaf sd ";
$len=strlen($str);
//用第一个参数里的字符串,把后面数组里的每个元素连接起来,返回一个字符串。
$str=implode("-",array("a","b","c"));
//字符串分割方法,返回一个数组,用第一个参数里的字符分割后面的字符串,指定字符的前后和之间都截取,如果指定字符在开头或结尾则返回的数组开头或结尾的元素为空字符串
//没有分割到字符串就返回给数组对应元素一个空值。最后一个限制返回数组长度,可不限制,则一直分割下去。
$array=explode("a","asddad addsadassd dasdadfsdfasdaaa",4);
//print_r($array);
//剔除字符串左边开头的空格,并返回
//如有第二个参数则是剔除左边开头的空格换成剔除第二个参数里的字符串
$str=ltrim("a asd ","a");
//剔除字符串右边开头的空格
$str=rtrim(" asd ");
//把第一个字符串两边以第二个参数开头的字符串剔除。如没有第二个参数,默认剔除掉字符串两边开头的空格
$str=trim(" sdsdfas ","a");
//从字符串第一个参数里的指定位置开始取多长(多少个)字符,字符串中第一个字符位置从0算。
//如果第二个参数为负则从字符串结尾倒数第几个开始取多长的字符串。结尾最后一个字符算-1,截取方向总是从左到右
$str=substr("abcdefgh",0,4);
//将第三个参数的第一个参数字符串用参数二字符串替换
$str=str_replace("a","","abcabcAbca");
//与str_replace用法同,只是不区分大小写
//$str=str_ireplace("a"," ","abcabcAbca");
//返回括号里字符串的字符全部大写的字符串
$str=strtoupper("sdaf");
//将括号里第一个字符串变成大写后返回
$str=ucfirst("asdf");
//用echo等将括号里字符串打印在网页上时原汁原味打印出括号里的字符串,包括标签字符
$str=htmlentities("
");
//返回第二个参数字符串在第一个字符串里出现的次数
$int=substr_count("abcdeabcdeablkabd","ab");
//返回第二个字符串在第一个字符串第一次出现的位置,第一个字符位置算0
$int=strpos("asagaab","ab");
//返回第二个字符串在第一个字符串最后一次出现的位置,第一个字符位置算0
$int=strrpos("asagaabadfab","ab");
//截取返回参数一中从左至右第一个出现的参数二到参数一最后一个字符的字符串
$str=strstr("sdafsdgaababdsfgs","ab");
//截取返回参数一中从左至右最后一个出现的参数二到参数一最后一个字符的字符串
$str=strrchr("sdafsdgaababdsfgs","ab");
//将参数二中每一个字符在参数一中相同字符前加"\"
$str=addcslashes("abcdefghijklmn","akd");
//将参数一的字符串填充到参数二指定的长度(单字符个数),参数三为指定填充的字符串,不写默认空格
//参数四填充位置,0在参数一左侧开头填充,1右侧开头,2两边开头同时。不写默认在右侧开头填充
$str=str_pad("abcdefgh",10,"at",0);
//依次比较两字符串对应字符阿斯克码值,第一对不一样的,如果参数一里大于参数二里的返回1,反之返回-1,两字符串完全一样返回0
$int1=strcmp("b","a");
//返回第一个参数格式化后的数字格式,第二个参数为保留几个小数,参数三为将小数点换成参数三,参数四为整数部分每三位用什么字符分割
//后面三个参数都不写,则默认去掉小数部分,整数每隔三位用逗号,分割。参数三,参数四必须同时存在
$str=number_format(1231233.1415,2,"d","a");
//===============================常用数组方法===============================
$arr=array("k0"=>"a","k1"=>"b","k2"=>"c");
//返回数组元素个数
$int=count($arr);
//判断第二参数的数组元素中是否有第一个参数元素
$bool=in_array("b",$arr);
//返回括号中数组所有键值组成的新数组原数组不改变
$array=array_keys($arr);
//判断第二个参数的数组中是否有第一个参数的键值,返回真假
$bool=array_key_exists("k1",$arr);
//返回原数组中所有元素值组成的新数组,键值从0开始自增,原数组不变
$array=array_values($arr);
//返回当前数组指针指向的键值
$key=key($arr);
//返回当前数组指针指向的元素值
$value=current($arr);
//返回当前数组指针指向元素的键值及元素值组成的数组,再将指针推向下一位,最后指针指向的是一个空元素返回空
//返回的数组中有四个固定键值对应的元素值分别是返回元素的键值及元素值,其中0,'key'键值都对应返回元素键值,1,'value'键值都对应返回的元素值
$array=each($arr);
//先将数组指针推向下一位,再返回指针移动后指向的元素值
$value=next($arr);
//将数组指针推向上一位,再返回指针移动后指向的元素值
$value=prev($arr);
//让数组指针重置指向第一个元素并返回元素值
$value=reset($arr);
//将数组指针指向最后一位元素,并返回最后一位元素值
$value=end($arr);
//将第一个参数以后的参数作为元素追加入第一个参数数组的末尾,索引从最小的没用过的数值开始计,返回之后的数组长度
$int=array_push($arr,"d","dfsd");
//将第一个参数数组后面所有参数作为元素添加到第一个参数数组开头处,键值以0从第一个元素处重新累加,原非数值的键值保持不变,原元素排序位置不变,返回之后的数组长度
$int=array_unshift($arr,"t1","t2");
//返回从数组尾部提取最后一个元素值,并把最后一个元素从原数组中剔除
$value=array_pop($arr);
//array_pop相反,提取返回数组头一个元素值,并把头一个元素从原数组中剔除
$value=array_shift($arr);
//让第一个参数数组达到第二个参数数值长度,将第三个参数作为元素添加到第一个参数数组的末尾,索引从最小没用过数值开始计并返回,原数组不改变
$array1=array_pad($arr,10,"t10");
//返回一个将原数组中多余重复元素剔除掉的新数组,原数组不改变
$array=array_unique($array1);
//将原数组键值打破重新以元素值的阿斯克码值从小到大排序,索引从数字0开始重计
$int=sort($array);
//和sort相反,以元素值阿斯柯码值大小降序重新排序,索引从0重新计
$int=rsort($array);
//返回将第一个参数数组中每一个元素值依次作为键值付给参数二数组的数组,两数组长度必须一致,原数组不改变
$array=array_combine(array("a","b","c","d","e"),$arr);
//将两个数组合并并返回原数组不变
$array=array_merge($arr,array("a","b","c"));
//在第一个参数数组中从第二个参数数值位置开始截取到第三个参数数值长度的数组键值+元素并返回,数组第一个元素位置从0计
$array=array_slice($arr,2,1);
//截取功能和array_slice()一样,只是将截取部分在原数组中剔除
$array=array_splice($arr,2,1);
//将第一个参数作为第一个元素,每次自增参数三的值,自增后再作为一个元素存在数组中,直到值达到参数二的值存到数组中为止并返回这个数组
//参数一,参数二可以是数字,可以是单个字符,单字符就按阿斯柯码值算,第三个参数不写默认每次自增1
$array=range(3,9,2);
//将原数组元素与对应键值的对应关系重新随机排列返回真假
$bool=shuffle($arr);
//计算数组中所有数值型元素值的和
$int=array_sum(array("a",2,"cssf"));
//把一个数组分割为新的数组块,新数组每个元素都是一个数组,新数组每个元素内有几个元素由参数二决定
//第三个参数决定元素的键值是否保留原键值可不写,true为保留,默认false不保留
$array=array_chunk(array("a"=>"a","b","c","d","e","f","g","h"),2,true);
//json_encode()将数组转换成JSON格式字符串返回
$arr = array('k1'=>'val1','k2'=>'val2','k3'=>array('v3','v4'));
echo $encode_str = json_encode($arr);
//json_decode()将JSON格式字符串转换成能强制转换成数组的对象返回,JSON格式字符串中键与值需要引号括起来时必须用双引号
$decode_arr = (array)json_decode($encode_str);
var_mp($decode_arr);
?>
❻ PHP中的函数
ThinkPHP中 C(),D(),S()
1.在具体的Action方法里面,可以用C()对某些参数进行动态配置,主要指那些还没有使用的参数。具体用法如下:
C('参数名称'); //获取已经设置的参数值
C('参数名称','新的参数值'); //设置新的值
2.D()函数的使用:
先定义好模型类,如UserModel,然后就可以用D()函数对数据进行操作了。例如:
先在"你的项目"\Lib\Model下建立一个名为UserModel.class.php的PHP脚本,内容如下:
class UserModel extends Model{}
然后,无需增加任何属性和方法,就可以进行如下操作:
$User = D("User"); //实例化User对象,User是你在数据库建立的一个名为"前缀_user"的数据表
也可以用$User = new UserModel()代替,进行实例化对象的操作。
实例化之后,就可以对数据进行增删查改等一系列操作了,如:
$User->find(1); //查找主键为1的记录
3.S()函数的使用:
ThinkPHP把各种缓存方式都抽象成统一的缓存类来调用,而且ThinkPHP把所有的缓存机制统一成一个S方法来进行操作,所以在使用
不同的缓存方式的时候并不需要关注具体的缓存细节。如:
S('data',$Data); //使用data标识缓存$Data数据
S('data',$Data,3600); //缓存$Data数据3600秒
$Data = S('data'); //获取缓存数据