1、isset和empty的区别
empty是判断一个变量是否为“空”;isset是判断一个变量是否已经设置。
2、==(等于)和===恒等的区别
恒等表示数据类型和数值都要相等;而等于就不会检查表达式的类型的。注意这些值:NULL、FALSE、array()、””、 0、”0″
3、strstr() 和 strpos()
都是查找字符串的首次出现,前者返回查找的字符,后者返回位置。
strrev():按字节反转字符的顺序。
explode()、implode()、array_reverse()
fputcsv():将行格式化为csv并写入文件指针
fgetcsv():从文件指针中读入一行并解析 CSV字段
4、格式化数字:number_format()
通过在数字中正确的位置插入小数点和千位分隔符来完成格式化的。
格式化货币:money_format()
接受一个格式化字符串和要进行格式化的数字作为参数。对于简单的格式化任务,使用%n和%i标识符分别作为国内和国际标准货币显示的标识符。
要得到正确的国家货币格式,可以通过setlocale()来设置。
money_format() 函数无法在 windows平台上工作,因为它的实现使用了unix底层的strform()系统函数。
5、三角函数
sin()、cos()、tan() =>反三角asin()、acos()、atan()
双曲线函数:sinh()、cosh()、tanh() =>反三角asinh()、acosh()、atanh()【Win下不支持这些逆函数】
6、deg2rad():将角度转换为弧度;
deg2rad():将弧度数转换为相应的角度数;
7、php大数字的处理
GMP库:实现长度无限制整数的数学运算。可接受整数和字符串作为参数。
gmp_init():创建GMP数字
gmp_strval():将GMP数字转化成字符串
gmp_add()、gmp_fact()、gmp_or()。。。。
BC MATH库:对于任意精度的数字,提供了支持用字符串表示的任意大小和精度的数字的二进制计算。
bcadd()、bcdiv()、bccomp()。。。。。
big_int库:高精度数学运算。(性能最好,但不是php自带的)
bi_fact()、bi_to_str()、bi_add()。。。。
18、进制问题
base_convert():切换进制。frombase和 tobase都只能在 2和 36之间(包括 2和 36)。高于十进制的数字用字母 a-z表示,例如 a表示 10,b表示 11以及 z表示 35。
专门的常用的进制转换函数,二、八、十和十六进制。
bindec()、decbin()和octdec()、decoct()和 hexdec()、dechex()
19、WEB安全色
由于不同的平台和浏览器都有自己的调色板,颜色的显示在不同的浏览器上显示的效果可能存在差别。为了解决web调色板的问题,通过了一组在所有浏览器中都一样显示的web安全颜色。
Web安全色的特点在于,R、G、B都必须是下列数字之一:00、33、66、99、CC和FF。web安全色在256色显示中不用进行抖动处理。
256色里有40种颜色在Macintosh和Windows里显示的效果不一样,所以能安全使用的只有216色。
20、strftime()、date()格式化日期/时间
date()使用的格式化字符是php专有的,strftime()使用的是C库中的strftime()函数,它更容易生成内部带有插值的时间和日期值的字符串。
getdate()、localtime()返回一个数组,数组中的元素分别保存着指定的日期和时间的特定部分。
getdate()返回的是“键值对”的关联数组;
localtime()可以根据第二个参数来决定是关联数组还是数字索引数组。
21、mktime():把部件视为本地时间,时间和日期部件来自本地时区;
gmmktime():视部件以UTC形式表示的日期和时间
返回的都是时间戳。
22、strtotime():将任何英文文本的日期时间描述解析为unix时间戳。
23、date_default_timezone_set ():设定用于一个脚本中所有日期时间函数的默认时区。
参数为时区标识符,timezone_identifier。
localtime ():取得本地时间。
24、生成唯一id
uniqid()
或者通过microtime()来组合一个唯一的id,但是这种方法在多线程的情况下并不可靠。
25、$fruits=array('fs','fads','fafad','fsadf');
list($red,$yell,$black,$white) = $fruits;
list() — 把数组中的值赋给一些变量。
数组循环读取数据:
$fruits = array('red'=>array('strawberry','apple'),'yellow'=>array('banana'));
foreach($fruits as $k1=>$v1){
foreach($v1 as $v2){
print "$v2 is colored $k1.<br>";
}
}
print "<hr>";
reset($fruits);
while(list($color,$fruit) = each($fruits)){
foreach($fruit as $value){
print "$value is colored $color.<br>";
}
}
each():返回数组只能怪当前的键值对并将数组指针向前移动一步。在执行each()之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。使用each遍历前,必须使用reset()重置指针。
26、settype():设置变量的类型。 ==》gettype()
is_array():检测变量是否为数组。
in_array():检查数组中是否有一个包含特定的值。在默认的情况下使用==操作符比较两个项目是否相等,第三个参数设置为true时将以===的严格相等比较。
array_search():在数组中搜索给定的值,成功则返回相应的键名。找不到返回false,而不是0。
unset()、array_splice()删除数组元素,后者可连续
array_keys()、array_values()
array_key_exists():检查给定的键名或索引是否存在于数组中,完全忽略数组中的值,只负责报告数组中是否存在指定键的元素;
isset():检测变量是否设置,并且不是 NULL。会以对待其他变量的方式来检查数组中的键,为null则返回false。
array_flip():反转数组中的键、值位置。注意的是数组中的值需要能够作为合法的键名,否则将不会反转。如果同一个值出现多次,则取最后一个值。
array_reverse():返回一个单元顺序相反的数组。
array_filter():用回调函数过滤数组中的单元。依次将数组的值传递到回调函数中,只有在回调函数返回true的时候,才将数组中的当前值包含在返回的结果数组中。数组的键名保持不变。如果没有提供回调函数,则将删除数组中所以值为false的条目。
array_map():将回调函数作用到给定数组的单元上。
27、计算交集:$union = array_unique(array_merge($a,$b));
计算交集:$intersection = array_intersect($a,$b);
计算简单的差集:$difference = array_diff($a,$b);
计算对称差集:$difference = array_merge(array_diff($a,$b), array_diff($b, $a));
28、创建类数组对象,继承ArrayAccess接口,它使得在操作对象中的数据时,使用与操作数据中的数据相同的一套约定。这样,既可以充分利用面向对象设计的好处,同时使用熟悉的数组接口与对象进行交互。要实现ArrayAccess接口,必须实现接口中的四个方法。
29、php中,空的变量是指其值可以转换成布尔值false的变量,包括整型数0,双精度型数0.0,空字符串、字符串“0”,布尔值false没有元素的数组、没有属性的对象和NULL。
30、不使用临时变量来实现变量值的交换:list($b, $a) = array($a, $b);。
list()语言结构可以把数组中的值分别指定给单独的变量,array()则把单独的变量值构造成一个数组。
31、动态创建变量名:即在一个其值作为变量名称的变量前面加一个$。
$animal = 'turtles';
$turtles = 103;
print $$animal; // 103
如果使用大括号,则可以构造出用于表示变量名的更复杂的表达式,在大括号中的表达式还可以调用函数。php会求得大括号之间的表达式的值。
$pans = array('one', 'two');
$pan_one = '123';
$pan_two = '124';
foreach($pans as $v){如果在声明中用表达式的结果对其赋值会导致解析错误
print "$v's real name is ${'pan_'.strtolower($v)}<br>";
}
32、使用静态变量:使本地变量在函数的调用之间保存自己的值。把一个变量声明为静态变量可以使得函数记住这个变量的值,那么在后面再次调用该函数时,就可以访问这个被保存的变量的值。静态变量也提供了一种提柜处理函数的方式。
function tt(){
static $i = 0;
$i++;
print "$i<br>";
}
注意,静态变量会在函数调用之间保留值,也只是在一个脚本程序中才有效的。如果在声明中用表达式的结果对静态变量赋值则会导致解析错误。