[php]php总结(1)
1、变量可以连续传递赋值
2、var_dump()打印变量信息
3、isset()与unset()
4、可变变量
$p = "temp";
$$p则表示$temp变量,即最右边的变量的值为下一个变量的值
5、变量支持引用
类似C语言可以利用&获取变量地址
6、变量的假值
0,null, 0.0, "", "0", array(),
7、单引号与双引号的区别
双引号中可以直接解析变量,单引号不可以
也能够解析大括号,单引号不可以
能够解析转义字符(单引号只能转义\和'),
$a = 100;
"the score is $a"输出为:the score is 100
"the score is {$a}"输出为:the score is 100
8、利用定界符声明字符串
$str = <<<EOF
heheheheeheheh
EOF;
相当于
$str = "heheheheeheheh";
EOF是自定义的
注意:开始标记必须是直接回车(空格都不能有)
结束标记后分号也直接回车
9、类型转换
setType(变量,类型字符串);
变量前加();
intval();floatval();strval();
10、常量
define(变量名字符串, 值);
constant()获取常量值
get_defined_constants();获取所有常量列表
11、php支持goto语句(与C相同)
12、函数默认参数
function demo($demo = "demo"){
}
13、可变参数函数
function demo(){
$arr = func_get_args();
$num = func_num_args();
}
14、变量函数
function add(){
}
$var = "add";
$var();
15、回调函数
回调函数:其接收的参数是函数,则这个函数就可成为回调函数
(1)利用变量函数来是实现的
//功能打印个位非0的数字
function remove($var, $func){
for($i=0; $i<$var; $i++){
if($func($i))
continue;
echo $i;
}
}
//此函数作为参数
function func($var){
if($var%10==0)
return true;
else
return false;
}
(2)当参数函数是类的静态方法或者是对象的方法,变量函数不能够支持
function remove($var, $func){
for($i=0; $i<$var; $i++){
if(call_user_func_array($func, array($i)))
continue;
echo $i;
}
}
class Filter{
function func($var){
if($var%10==0)
return true;
else
return false;
}
}
remove(100, array(new Filter(), "func"));
注意:此处调用remove函数是用数组来描述参数函数,即$func=array(new Filter(), "func")
call_user_func_array($func, array($i))是将后边数组中的元素按照顺序赋给前边的函数的形参
16、require和include的区别
(1)require在预处理时候执行,想当于将require文件中的用到的函数或内容拷贝到调用的地方
(2)require执行失败会出现致命错误,而include是出现警告
17、闭包函数
(1)函数内部有函数,父函数可以返回子函数,但子函数不能有return
(2)子函数可以调用父函数内部的变量,利用关键字use
(3)父函数的内部变量会保持激活状态不会被释放
function test(){
$a = 100;
$p = function () use(&$a){
echo $a++;
};
return $p;
}
$test = test();
$test();
$test();
$test();
多次调用$a的值是在不断增加的
随机推荐
- ASP.NET MVC 4.0 参考源码索引
http://www.projky.com/asp.netmvc/4.0/Microsoft/AspNet/Mvc/Facebook/FacebookAppSettingKeys.cs.htmlhtt ...
- modify headers插件的使用
Modity headers是firefox浏览器的一个插件,作用是改变http请求的IP地址 (一)在firefox中添加该插件 步骤一:打开firefox浏览器,打开地址: https://add ...
- C#中重写(override)和覆盖(new)的区别
重写 用关键字 virtual 修饰的方法,叫虚方法.可以在子类中用override 声明同名的方法,这叫“重写”.相应的没有用virtual修饰的方法,我们叫它实方法.重写会改变父类方法的功能.看下 ...
- Reverse Words in a String II
Given an input string, reverse the string word by word. A word is defined as a sequence of non-space ...
- Python日记——nginx+Gunicorn部署你的Flask项目
转自:http://blog.csdn.net/qq_32198277/article/details/52432890 大家在学习Python的时候常常都是输入 python 文件名.py 这样 ...
- SPOJ_SUBLEX
经典题目:给一个字符串,求字典序第k小的子串是什么. 涉及子串问题,上自动机. 首先我们可以用记忆化搜索的方法,求出到达某一个状态后,能产生多少个新状态. 首先,到达这个状态就不走了,这肯定是一种状态 ...
- ADO.NET:C#/SQL Server
1.首次要准备的(工具)是:a.Microsoft Visual Studio Ultimate 2012;b.Microsoft SQL Server Management Studio ; 2.首 ...
- Vector源码解析
概要 学完ArrayList和LinkedList之后,我们接着学习Vector.学习方式还是和之前一样,先对Vector有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它.第1部分 Vec ...
- std::string 赋值为nullptr引起程序崩溃
一个错误排查两天,std::string赋初值时最好为"", 如果赋初值为nullptr,因为std::string不能和nullptr作比较,所以后面用的时候会引起崩溃. 佩服我 ...
- 51nod 1206 Picture 矩形周长求并 | 线段树 扫描线
51nod 1206 Picture 矩形周长求并 | 线段树 扫描线 #include <cstdio> #include <cmath> #include <cstr ...