- 论坛徽章:
- 0
|
本帖最后由 mengyixing114 于 2013-05-30 10:27 编辑
1、布尔值:false(0,空白,null);true(-1,非0值);
2、echo’$s’输出内容是$s;
如果&&里面包含了$s或者{$s},那么将显示的变量的值。推荐使用{$s}的方式。
使用&&时候,如果在&&里面还要使用&&,就必须用来转义,例如: echo&<font>&sss&</font>&;
3、字符串连接:使用标点&.&进行字符串连接。
4、访问字符串中的字符:通过在字符串之后用花括号指定所要字符从零开始的偏移量来访问。
strlen($str)函数可以获取字符串长度。
$str[0]获取字符串$str的第一个字符。
substr(’123456’,5,1)从第5个字符开始获取一个字符,结果是6.
5、strval($s)将$s的值转换成字符串,intval($s)将$s的值转换成int整型数值。
双引号里面使用双引号:&a&b&=a&b;
6、数组 array括号,逗号,=>
数组排序:sort($arr);
定义:$arr=array(1=>’11’,’foo’=>’fffooo’,’info’=>array(2=>22,’ghost’=>’host’));
引用:$arr[1]$arr[’foo’]$arr[’info’][2]$arr[’info’][’ghost’]
count($arr)获取数组元素数量
遍历数组:$arr=array(1=>’111’,2=>’222’,3=>’333’);
foreach($arras$k=>$v)
echo&{$k}_{$v}<br>&;//输出:1_1112_2223_333
7、对象
<?php
classfoo
{
var$a=’s’;//类的变量!!
functioninit()//类的函数
{
echo&Doingfoo.&;
echo$this->a;//引用类的变量!!
}
}
$bar=newfoo;
$bar->init();
?>
8、变量
isset($s)检查变量是否已经设置,如果还没有设置就引用$s将导致php提示:Undefinedvariable。
默认情况下变量之间赋值是不会互相影响的(传值赋值模式);
如果是$a=&a&;$b=&$a这种情况下,$a和$b中任一个变量的值改动了,另外一个变量的值也随之变化(传地址赋值模式)。
PHP5的预定义变量:
$_SERVER[&REMOTE_ADDR&]//获取ip地址 [Page]
$_REQUEST[],$_GET[],$_POST[]//获取提交的参数的值
$_SESSION[],$_COOKIE[]
$_FILE[]
$_ENV[]
9、常量
<?php
define(&CONSTANT&,&Helloworld.& ;
echoCONSTANT;//outputs&Helloworld.&
?>
10、运算符号
/取商,结果为float型,通过(int)($a/$b)得到整型商
%取余,结果为整型
==是否恒等
!=<>不等于
and&&与or||或!非
round($a)四舍五入取$a的值
floor($a)舍去$a小数点后内容取整
ceil($a)进一法取整,返回不小于$a的下一个整数
11、流程控制
if(){doit}
elseif(){doit}
else{doit}
for($i=0;$i<$b;$++)
swtich($a){
case’1’:doit;break;
case’2’:doit;break;
default:doit;
}
12、函数
function_exists(functionname)指定的函数是否存在;
函数内引用全局变量:global$a;
静态变量:static$a只在函数内部编号;
functionshow()
{static$a=0;$a++;echo$a;}
$a=10
show();
show();
echo$a
输出结果:1,2,10
13、类与对象
14、图像处理(需要GD库支持)
检查是否启动了GD库支持:if(function_exists(gd_info))
gd_info()返回值是一个数组;
检查GD库版本:$ver=gd_info();echo$k[’GDVersion’];
在x,y坐标处新建图像:$img=imagecrete(x,y)
为图像分配颜色:$color=imagecolorallocate($img,R,G,B)
发送图片给浏览器;header(&content-type;image/gif& 或者image/jgeg,image/png
显示图片;imagegif($img)imagejpeg($img)imagepng($img)imagewbmp($img) [Page]
释放内存:imagedestroy($img)
显示文字;imagestring($img,intfont,x,y,$str,$color)如果font是1,2,3,4或5,则使用内置字体。
划线:imageline($img,x1,y1,x2,y2,$color);
15、SESSION
session_start()建立会话
$_SESSION[’var’]=’kkk’建立var会话变量并赋值
session_unset()注销已注册session变量
session_unregister(’var’)注销session变量var
PHP后退页面过期或不存在问题的解决:
post后或使用了使用了session都有可能引起这种情况
解决办法,在开头加入如下代码即可:
header(&Cache-control:private& ;
1、最好是用include_once()而不要用include()函数;
require_once()遇见错误则停止执行,include_once()提示后继续执行;
2、empty($str)如果$str是0或者为空都会返回true,所以$str最好不要有0
3、---------页面转向--------------------
&<scrīptlanguage=javascrīpt>alert(’成功注销会员’)</scrīpt>
<metahttp-equiv=’refresh’ content=’0;url=searchMember.php’>&;
当然header(’location:URL’)也可以实现但是效果没有上面的好!!
但是要特别注意:header这个函数所在的页面上在调用此函数前,不能有任何输出!!
-----------------------------
4、php代码里面嵌套html或者js代码时候,最好用单引号而不要用双引号!!
5、获取页面提交的参数:$_SERVER[’REMOTE_ADDR’].$_SERVER[REQUEST_URI]
6、显示本区时间:date_default_timezone_set(’PRC’);echodate(&H:i:s& ;这样才是服务器的时间,如果不设置时区PHP5版本后显示的时间就不是本地时间!!
date(&YmdHis& 显示年月日时分秒
10、细线表格设计:单元格间距=1;表格背景色=你想要看见最终显示出来的表格边框色;单元格背景色=白色或者很浅的色系。
竖线:表格列填充黑色,列宽度=1
字体:14像素+宋体style=&width:80&
12、关于使用$_GET[]和$_POST[]获取页面变量:action=’1.php?action=add’中应该用$_GET[’action’]来获取action提交的值!!
处理radio单选组:由于radio单选组的name都是一样的,所以使用$_REQUEST[&name&]就可以获取到单选的那个项的值value。
处理select下拉框(单选):由于select单选组的name都是一样的,所以使用$_REQUEST[&name&]就可以获取到选择的下拉项的值value。
处理select下拉框(多选):select下拉框命名必须为name[]形式;
$arr=$_REQUEST[&name&];
for($i=0;$i<count($arr);$i++)
echo&{$arr[$i]}&;
处理checkbox多选组(多选):checkbox多选组必须命名为checkbox[]形式; [Page]
$arr=$_REQUEST[&checkbox&];
for($i=0;$i<count($arr);$i++)
echo&{$arr[$i]}&;
14、变量的引用,
(condition)?action1:action2相当于if(condition)action1elseaction2.
funcitonmsg($j=0,$k=1,$l=3)预定义参数值,如果参数不指定则用默认值,如果指定了就用指定值。
17、htmlentities($_POST[’$S’])将$S的内容中所有的特殊字符转换成HTML表示方式。
所有会引起浏览器进行特殊处理的字符在进行了转换后,就能确保显示出来的是原来录入的内容。
18、-----------------页面和代码分离的一种模板(分htm和php)------------------
第一、php文件处理完所有的业务(control和model),查询结果一般放到数组,然后htm文件里面可以直接调用数组变量。
php文件末尾必须include_once(htm文件)!!
$query=mysql_query($sql);
while($rs=mysql_fetch_array($query))
{
$catedb[]=$rs;
}
第二、htm文件只管显示(view),写代码时候,使用print<<<EOT与EOT;搭配,EOT;的前面一定不能留空格,必须顶格,切记切记。
例如:
<!--
if(!empty($catedb))//$catedb是sql查询的结果集
{
foreach($catedbas$key=>$value)
{
print<<<EOT
-->
<ul><li>
<ahref=&admin.php?job=sort&do=editwin&id={$key}#分类编辑&><b>{$value[’name’]}</b></a>
<spanclass=&smalltxt&>-显示顺序:<inputtype=&text&name=&{$value[’sid’]}&value=&{$value[’vieworder’]}&size=&1&>-
<ahref=&admin.php?job=sort&do=editwin&id={$key}#分类编辑&>[编辑]</a>
<ahref=&admin.php?job=sort&do=del&id={$value[’sid’]}&>[删除]</a>
</span></li>
</ul>
<!--
EOT;(必须顶格)
}
}
print<<<EOT
-->
第三、<!---->中,<?php?>必须写在最前面和最后面。
例如:
<!--
<?php
print<<<EOT
-->
html代码
html代码
<!--
EOT;
php代码
print<<<EOT
-->
html代码
html代码
<!--
EOT;
?>
-->
//------------------------------------------------
19、数据库操作
//连接数据库
$link=@mysql_connect(host,usr,name)ordie(&erromessage!!& ;
@mysql_close($link); [Page]
//选择数据库
$db=@mysql_select_db(&db_name& ordie(&err:3& ;
//查询
$sql=&select*fromdb&;
$result=@mysql_query($sql)ordie(&erromessage!!& ;
//显示查询结果集
$result=@mysql_query(&SELECTid,nameFROMmytable&);
while($row=@mysql_fetch_array($result))
{
printf(&ID:%sName:%s&,$row[0],$row[&name&]);
}
//获取查询包含的记录总数
mysql_num_rows($result)返回select语句查询结果的记录总数。
mysql_affected_rows()返回insert,delete,update等sql语句更新的记录总数,注意此函数没有参数!!。
mysql_num_fields($query)返回select语句查询结果的列(字段)总数。
//释放查询占用的内存
mysql_free_result($result)
//事务操作
//修改记录
mysql_array_rows($)和mysql_affected_rows()返回值必须>0才算操作成功,
mysql_affected_rows())返回值可能是-x负数,此时用if(mysql_affected_rows()))判断也是返回true!!!
//------------------------------------------------
20、javascrīpt学习:
(1)、获取表单的元素个数:form.elements.length
(2)、表单第(I-1)个元素的类型:form.elements.type=&button&
(3)、表单元素的值:form.elements.value=&&;
(4)、复选框标记已经勾选:document.form.checkbox.checked=true
(5)、单选按钮:document.form.radio.checked
(6)、Select的索引值:document.form.select.selectIndex
(7)、select的属性:document.form.select.options.text;
document.form.select.options.value;
( 、当前select的值:document.form.select.options[document.form.select.selectIndex].value;
//------------------------------------------------
21、数组
$arr=array(1,2,3,4,5);
foreach($arras$i=>$value)
echo$arr[$i];
//打印数组详细内容print_r($array)
<?php
$a=array(’a’=>’apple’,’b’=>’banana’,’c’=>array(’x’,’y’,’z’));
print_r($a);
?>
count($arr) 返回数组$arr的列的数目。
//-----------------文件操作----------------------------
<formenctype=&multipart/form-data&action=&&method=& OST&> [Page]
Sendthisfile:<inputname=&myfile&type=&file&>
form必须有参数说明enctype=&multipart/form-data&才能有文件上传功能。
设置了文件上传功能后,php自动建立了全局变量$_FILES;
$_FILES[’myfile’][’name’]客户端机器文件的原名称。
$_FILES[’myfile’][’type’]文件的MIME类型,需要浏览器提供该信息的支持,例如image/gif。
if($_FILES[’fl’][’type’]==’image/jpeg’)只能上传JPEG类型文件
$_FILES[’myfile’][’size’]已上传文件的大小,单位为字节。(不可靠的数据)
判断上传文件大小if(filesize($_FILES[’attachment’][’tmp_name’])>1024000)(这样判断才可靠)
$_FILES[’myfile’][’tmp_name’]文件被上传后在服务端储存的临时文件名。
$_FILES[’myfile’][’error’]和该文件上传相关的错误代码。
php文件上传时候,windows系统下的文件路径必须是用来做转义表示,例如’c:windows’而不是’c:windows’,;
php处理文件上传做法:文件被上传结束后,默认地被存储在了临时目录中,这时您必须将它从临时目录中删除或移动到其它地方,
如果没有,则会被删除。也就是不管是否上传成功,脚本执行完后临时目录里的文件肯定会被删除。
所以在删除之前要将它复制到其它位置,此时,才算完成了我们的上传文件过程。
$file=$_FILES[’fl’][’name’];
$tmp=$_FILES[’fl’][’tmp_name’];
if(move_uploaded_file($tmp,’c:apachehtdocs’.$file))
echo’uploadfileok’;
else
echo’uploadfilefailse’;
上传多个文件:有了上面的认识,同时上传多个文件也就不难做了。上传多个文件是从PHP3.0.10版本开始被支持。
要完成它,只需文件名以数组形式表示即可:
<formaction=&file-upload.php&method=&post&enctype=&multipart/form-data&>
<inputname=&myFile[]&type=&file&><br>
<inputname=&myFile[]&type=&file&><br>
<inputtype=&submit&value=&上传多个文件&>
</form>
假如我们上传了两个文件:first.txt和second.gif。表单被提交后,
$_FILES[&myFile&][&name&][0]、$_FILES[&myFile&][&size&][0]分别指first.txt文件的名字和大小,
$_FILES[&myFile&][&name&][1]、$_FILES[&myFile&][&size&][1]分别指second.gif的文件名字和大小。
当然,$_FILES[&myFile&][&tmp_name&]、$_FILES[&myFile&][&type&]也同样会产生。
boolis_uploaded_file(stringfilename)
说明:如果filename所给出的文件是通过HTTPPOST上传的则返回TRUE。这可以用来确保恶意的用户
无法欺骗脚本去访问本不能访问的文件,例如/etc/passwd。这种检查显得格外重要,如果上传的文件有 [Page]
可能会造成对用户或本系统的其他用户显示其内容的话。为了能使is_uploaded_file()函数正常工作,
必段指定类似于$_FILES[’userfile’][’tmp_name’]的变量,而在从客户端上传的
文件名$_FILES[’userfile’][’name’]不能正常运作。
<?php
$old_filename=$_FILES[’attachment’][’tmp_name’];//获得上传到服务器临时目录得文件的名称;
$new_filename=’/path/to/’.$_FILES[’attachment’][’name’];
if(move_uploaded_file($old_filename,$new_filename))//移动上传临时文件到制定目录
{
/*$old_filenameisanuploadedfile,andthemovewassuccessful.*/
}
?>
遍历$mydir目录下的文件和文件夹:
if($dirhandle=opendir($mydir))
while(false!==($fi=readdir($dirhandle)))
echo$fi.’<br>’;
closedir($dirhandle);
22、数学函数
$a/$b如果除不尽,结果是浮点数。
$a%$b取商;
ceil($a)四舍五入取值$a;
floor($a)只取$a的整数部分;
-----------------------------------------------------------------------------------------------
23、php与OOP
--------------------class.php------------------------------------
classdatabase
{
public$num,$result;
publicfunctionquery($sql)
{
$this->result=@mysql_query($sql)ordie(&errcode3:sqlqueryfail&);
return$this->result; //返回查询结果集
@mysql_free_result($result)ordie(&errcode5:mysql_free_result()fail&);
}
publicfunctionnum_rows($sql)
{
$this->result=$this->query($sql);//通过$this->query引用query函数.$this->result引用成员变量result!!
$this->num=@mysql_num_rows($result)ordie(&errcode4:mysql_num_rows()fail&);
return$this->num;//此函数返回查询的结果数。
}
}
--------------------test.php------------------------------------
<?php
include_once(&class.php&);
$conn=newdatabase;
$sql=&select*fromuserorderbyuserAge&; [Page]
echo$conn->num_rows($sql).&<br>&;
?>
//-------------------php与Ajax------------------------------------
由于jsvascrīpt采用UTF8编码,在windows下采用ajax回送服务器的返回信息就会出现乱码,
因此在windows下应用时,php处理页面ajax请求的页面必须包含:
header(’Content-Type:text/html;charset=GB2312’);这句话,否则php获取的中文数据返回到
ajax的html界面将显示乱码。
//输出xml
<?
require_once(&conn.php&);
header(&Conten-Type:text/xml&);
echo&<?xmlversion=&1.0&encoding=&gb2312&?>&;
echo&<menuitems>&;
$result=mysql_db_query(&myly&,&select*frommyTable&);
while($row=mysql_fetch_object($result)){
echo&<item><species>&.$row->name.&</species>&;
echo&<location><![CDATA[&.$row->location.&]]></location></item>&;
}
echo&</menuitems>&;
mysql_free_result($result);
mysql_close();
?>
//输出xml------------------------------------------------------------------
<?php
header(&Conten-Type:text/xml&);
echo&<?xmlversion=&1.0&encoding=&gb2312&?>&;
echo&<user><row>&;
for($i=0;$i<5;$i++)
{
$str=&<col{$i}>{$i}</col{$i}>&;
echo$str;
}
echo&</row></user>&;
?>
|
|