从0开始学习PHP,学到建立网站,001 基本语法

来源:互联网 发布:java判断请求的浏览器 编辑:程序博客网 时间:2024/06/16 08:34

首先在网上收集PHP基本语法,运算标示符 就不阐述了 因为都大同小异

=======引用自===http://jiayuan.liuzebbs.com/blog-2-2.html

PHP基础语法知识大全

##混合型的数组

$arr=array("foo" => "bar",12=>true,5=>3);

echo $arr["foo"];//bar

echo $arr[12];//1

echo $arr[5];//3

#添加

$arr[]=99;

echo $arr[13];//99

$arr["add"]="new";

echo $arr["add"]//new

#删除

unset($arr["foo"]);

unset($arr);

 

 

##对象|类型|常量

class foo{

function do_foo(){

echo "hello";

}

}

$bar = new foo();//实例化一个对象给变量

$bar->do_foo();//hello

#类型转对象

$obj=(object)"rczjp";

echo $obj->scalar;//rczjp

#强制类型转换

$foo=3;

$bar=(bool)$foo;

echo $foo;//3

echo $bar;//1

#单引号不转义

echo 'qq$w\nw';//qq$w\nw1

#定义常量

define("PI",3.1415926);

echo PI;//3.1415926

#操作符,其中连接操作符是点(.),其余的同其他语言

echo 11==11;//1

echo 11==="11";//类型不一样,不相等

echo 11>=.10;//1

 

 

##函数

function fun(){

print "Hello word!";

}

$funvar = "fun";//函数名赋值给变量,此变量就成了这个函数的引用

/*fun()或者$funvar()调用函数*/

 

 

##变量的作用域

$life=42;

function meaningOfLife(){

global $life;//函数内部访问全局变量必须加global

$life=33;

print "The meaning of life is $life
";

}

meaningOfLife();//The meaning of life is 33

#static

function numberedHeading($txt){

static $num_of_calls=0;

$num_of_calls++;

print "<h1>$num_of_calls$txt</h1>";

}

numberedHeading("Widgets");//1. Widgets

numberedHeading("Doodads");//2. Doodads

/*static类型是常驻内存的*/

 

 

##传值与传址(引用)

//传值

function addFive($num){

$num+=5;

}

$orignum=10;

addFive($orignum);

print $orignum;//10

//传引用

function addThree(&$num){

$num+=3;//因为传递过来的是变量$num的引用,所以改变形参$num的值就是改变变量$oldnum物理内存中保留的值

}

$oldnum=10;

addThree($oldnum);

print $oldnum;//13

 

 

##创建匿名函数

$my_anonymity=create_function('$a,$b','return $a+$b;');

print $my_anonymity(11,33);//44

//判断函数是否存在

function QQ(){}

echo function_exists("QQ");//1

 

 

##PHP连接MySQL

$link = mysql_connect('localhost', 'root', 'pwd');

mysql_select_db("ultrax",$link);//连接数据库

$sql="Select * From pre_forum_post";

$result=mysql_query($sql,$link);//增删改查

//输出结果

if(mysql_num_rows($result)>0){//记录数

while($newArray=mysql_fetch_array($result)){

$pid=$newArray['pid'];

$fid=$newArray['fid'];

$tid=$newArray['tid'];

$author=$newArray['author'];

$subject=$newArray['subject'];

$message=$newArray['message'];

echo $author." ";

}

}

mysql_close($link);//关闭

 

 

##获取表单提交的元素值

$formval=$_POST['txt'];//eg.文本框的name

echo $formval;

/*

直接如上写法,有警告提示 Notice: Undefined index: txt,以下是两种解决方法:

if(array_key_exists('txt',$_POST)){...}

if(!empty($_POST['txt'])){...}

*/

##获取URL参数的值

$getval=$_GET['p'];

echo $getval;

##页面跳转

header("Location:http://www.rczjp.cn");

 

 

##字符串操作

//字符串分割为数组

$str="1-2-33-44-5-55";

print_r(explode("-",$str));//Array ( [0] => 1 [1] => 2 [2] => 33 [3] => 44 [4] => 5 [5] => 55 )

//字符串替换

print(str_replace("-","=",$str));//1=2=33=44=5=55

 

 

数组序列化和反序列化

$groupterms = array();$groupterms['main'] = array('time' => 1307980800, 'adminid' => 0, 'groupid' => 10);

序列化=>将数组转成字符串

$grouptermsnew = addslashes(serialize($groupterms)); 

反序列化=>将字符串转成数组

$str='a:4:{i:4;s:16:"bbs1.discuz7.com";i:6;s:16:"bbs2.discuz7.com";i:2;s:17:"bbs12.discuz7.com";i:9;s:14:"ok.discuz7.com";}';
$domain=unserialize($str);
echo $domain[9]; //ok.discuz7.com
echo array_search("bbs2.discuz7.com", unserialize($str));  //6

 

日期加减,减去一个月和一天

date('Y-m-d',strtotime('-1 months -1 days',time()));

##session

session_start();//打开session或者在PHP.ini里面配置session.auto_start 将0修改成1(启用),这样就不必每次都调用这个函数打开

$_SESSION['uname']="QinMi";//赋值

$sessionval=$_SESSION['uname'];//获取

session_destroy();//销毁session

 

##Cookie

$_COOKIE['c1'] ='cookie1';

setcookie('c2','cookie2',time()+3600);

echo "c1:".$_COOKIE['c1'].",c2:".$_COOKIE['c2'];  //c1:,c2:cookie2

 

删除Cookie

setcookie("c2", "", time() - 3600);

基于域的COOKIE

setcookie()还可以设置控制读取cookie的程序的域及目录路径,默认为同服务器且在同级或以下目录结构内的页面才可以读取,然而如果你想设置允许从域example.com/~www目录处理页面

setcookie("domaincookie", "hello", time() + 3600, "/~www/", ".tag.com", 1);

setcookie("domaincookie", "hello", time() + 3600, "", ".tag.com", 0);

1ssl的安全链接

输出如下

Array

(

    [X-Powered-By] => PHP/5.2.17

    [Set-Cookie] => domaincookie=hello; expires=Thu, 17-Mar-2011 09:57:35 GMT; domain=.tag.com; secure

)

 

删除

setcookie("domaincookie", "", time() - 3600, "", ".tag.com", 0);

输出如下

Array

(

    [X-Powered-By] => PHP/5.2.17

    [Set-Cookie] => domaincookie=deleted; expires=Wed, 17-Mar-2010 08:59:24 GMT; domain=.tag.com

)

SESSIONCOOKIE的用法有点不一样,所以在使用COOKIE的时候是用setcookie

 

其他函数

echo "{$_SERVER['HTTP_USER_AGENT']}";

$browser = get_browser();//开启php.ini中的browscap.ini,如未找到,请搜索并指定路径

echo "<pre>";

print_r($browser);

print_r($browser->browser);

 

//PHP代码高亮

highlight_string("<? function(){echo 'hello';} ?>");

//show_source('test.php');

 

echo uniqid();//生成唯一标识符

 

function foo() {

    //统计函数的参数个数

    $numargs = func_num_args();

    echo "
参数个数:$numargs
"
;//参数个数:3

    if ($numargs >= 2) {

       echo "第二个参数:" .func_get_arg(1)."
"
; //第二个参数:qinmi

    }

    //获取foo函数所有的参数

    $arg_list = func_get_args();

    for ($i = 0; $i < $numargs; $i++) {

       echo $arg_list[$i]." "; //hello qinmi rczjp.cn

    }

}

foo('hello', 'qinmi', 'rczjp.cn');

 

//------ ob_start(); ob_get_contents(); 缓冲区---------------------//

ob_start();//开启输出缓冲区

 

echo '缓冲数据1';//保存在缓冲区,不输出

$o1 = ob_get_contents();//获取缓冲区的内容

$l1 = ob_get_length();//获取缓冲区内容的长度[中文算2个长度]

ob_end_clean();//删除内部缓冲区的内容,并且关闭内部缓冲区

 

ob_start();

echo '缓冲数据2';

$o2 = ob_get_contents();

ob_end_clean();

 

echo $o1.",长度:".$l1."
"
;//缓冲数据1,长度:9

echo $o2;//缓冲数据2

//-----------------------------------------------//

 

 

提高安全性

//关键页面禁止访问,比如类与函数库文件等

if(!defined('QINMI')) {

    exit('禁止访问');

}

//需要被访问的页面,设置可以访问即可。

define('QINMI', true);

?>

 

<?php

ignore_user_abort(true);//忽视用户中断,默认都是不忽视的,节约系统资源

sleep(5);//等待5

var_dump(connection_status());//显示用户的连接状态

 

//浏览器停止或关闭都将继续进行

$logtime = fopen("1.txt","a+");

fwrite($logtime, date("Y-m-d H:i:s")."\r\n");

fclose($logtime);  

?>

 

echo number_format(12345.892,4,'.','@');//4是精确的小数位,第三个参数是小数点的符号,第四个参数是千位分隔符号
echo 
nl2br("\nhello\nword\n");//\n转成<br />
echo pack("C*",97,98);//ab
print_r(unpack("C*",'aB'));//Array ( [1] => 97 [2] => 66 ) 
$bin = pack("c2n2",0x31,0x32,65,66);
echo $bin;//12AB
print_r(unpack("c2chars/n2int",$bin));//Array ( [chars1] => 49 [chars2] => 50 [int1] => 65 [int2] => 66 )
echo 
strtr('abcd,efg,hi',',','@');//效率比str_replace要高.打开apachemod_deflate模块,提高网页浏览速度

====了解基本语法 完======