原文链接:http://www.phpdo.net/index.php/2010/01/29/1-5/
以下代码是几个表达式的例子:
$a = “phpdo.net”;
$sum = $var_a + $var_b;
$i++;
PHP中运算符是表达式中对运算符进行操作的符号,包括算术运算符,字符串运算符和逻辑运算符等。
PHP有一个与C语言类似的概念——关键字。
关键字就是被PHP本身使用的用于实现一些基本操作的字,这些字不能用于其它用途。
PHP在对于 关键字的的躲避比其他语言容易很多,因为PHP的便变量都是以”$”开头。
PHP中关键字通常分为四种类型:
1、 用于数据类型定义的关键字,如:int,string,bool,classic,object和array等。
2、 用于流程控制结构的关键字,如:if、else、elseif、do、while、breakf和continue等。
3、 用于设置存储类型的关键字,如:static、global等。
4、 其他类型的关键字。
......
在PHP脚本中变量主要有:内置超级全局变量,一般的变量,常量,全局变量,静态变量等等,我们在使用它们的时候除了要正确地知道它们的语法以外,更重要的是,我们要知道它们在本质上的区别与联系—即它们的作用域的问题。
1.内置超级全局变量可以在脚本的任何地方使用和可见。即是说,如果我们在一个PHP页面中改变了其中的一个值,那么在其他PHP页面中使用时,它的值也会发生改变。
2.常量一旦被声明将可以在全局可见,也就是说,它们可以函数内外使用,但是这仅仅限于一个页面之中(包含我们通过include和include_once)包含进来的PHP脚本,但是在其他的页面之中就不能使用了。
3.在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部,在函数内部的变量如果与全局变量名称相同,以函数内部的变量为准。
4.函数内部使用的变量声明为全局变量时,其名称要与全局变量的名称一致,在这样的情况下,我们就可以在函数中使用函数外部的全局变量了,这样就可以避免上一种因为函数内部的变量与外部的全局变量名称相同而覆盖了外部变量这样的情况。
5.在函数内部创建并声明为静态的变量无法在函数外部可见,但是可以在函数的多次执行过程中保持该值,最常见的 ......
call_user_func函数类似于一种特别的调用函数的方法,使用方法如下:
<?php
function a($b,$c)
{
echo $b;
echo $c;
}
call_user_func('a', "111","222");
call_user_func('a', "333","444");
//显示 111 222 333 444
?>
调用类内部的方法比较奇怪,居然用的是array,不知道开发者是如何考虑的,当然省去了new,也是满有新意的:
<?php
class a {
function b($c)
{
echo $c;
}
}
call_user_func(array("a", "b"),"111");
//显示 111
?>
call_user_func_array函数和call_user_func很相似,只不过是换了一种方式传递了参数,让参数的结构更清晰:
<?php
function a($b, $c)
{
echo $b;
echo $c;
}
call_user_func_array('a', array("111", "222"));
//显示 111 222
?>
call_user_func函数和call_user_func_array函数都支持引用,这让他们和普通的函数调用更趋于功能一致:
<?php
function a(&$b)
{
$b+ ......
开发中一直没办法解决的一个问题
页面采用UTF8编码,头部和尾部用了模板包含文件的方法,结果头部和尾部无端端各多出一个约10px的空
行,什么也没有。
原因是全部采用utf8编码,包含文件的时候,最后的二进制流中包含了多次UTF8
BOM标记,IE不能正常解析包含多个UTF8 BOM 标记的页面,直接替换成实际显示的回车,这样导致一个空行,而firefox却没有这个问题。
故如果模板采用包含的方法包含多个utf8文件需要用ultraedit保存时另存为功能 选择utf8 无bom格式保存即可。
另外,如
果中文页面在html head标记中将title标记放在<meta http-equiv=”content-type”
content=”text/html; charset=UTF-8″ />前面会导致页面空白。
所以utf8页面应该使用标准顺序
<meta http-equiv=”content-type” content=”text/html; charset=UTF-8″
/>
<meta http-equiv=”content-language” content=”zh-CN” />
<meta name=”robots” content=”index,follow” />
<meta
name=”keywords” conten ......
在php中测试单个文件上传和在网上浏览了很多关于多文件上存,大多都是差不多一样的。只是上传多个文件用post传递时是数组传递,如<input type="file" name="pic[]" id="pic">而单个文见上传<input type="file" name="pic" id="pic">。
提交数据时,多个文件用foreach 来循环,其他限制和单个文件上传都是一样。。。。 一定用的的函数move_uploaded_file ......
最近在处理小鱼社区的开发过程,遇到程序的性能问题,在解决这个问题的时候提出几个建议:
1、处理while/foreach之类的循环要特别注意,因为这个循环可能是好几千次的,所以里面的每句语句都要注意执行速度,要精简。还有个不好的习惯一定要注意,不要在这个中写太长的程序,因为这可能让你在几百行的代码中迷失,慢慢地迷失了,忘记自己在循环中。如果在循环中有出现require_once/require同一个文件、还有要检查其中的mysql查询语句一定要把这部份代码移出循环
2、不要在循环中频繁读写cookie,这要进行io操作,会影响程序执行时间
3、不要建立一个,含有几千行元素的数组,例如帖子版块信息缓存,版块多的时候很容易出现这种情况
4、尽量使用php内置函数,不要又重复制造车轮,因为内置函数基本上效率会比自己写的高
5、利用各种工具(xhprof/xdebug/microtime())来分析程序执行,查找影响时间的程序段,再进行优化
6、在使用数组元素时候,尽量$arr['el']格式,不要用$arr[el],因为后者还会去检测这个el是不是常量 ......