PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,基于Zend引擎,常用来开发HTML,也可以生成XML文本
PHP四种标签:<?php XML风格 ?> <? 短标签(要配置) ?><?= ?> <% ASP格式 %> <script language='php'>脚本风格</scritp>
&$MyVar:变量的引用
例子:define("count",10);$MyArray[10]=10;$MyArray[]=11;$MyArray['count']=count;$MyArray[count]=20;print_r($MyArray);
结果:[10]=>20,[11]=>11,[count]=>count;
证明:数组会默认从最大下标自动递增,带引号的常量名为字符。
print()是函数可以嵌套到语句中使用,echo()是语法不可以嵌套语句中使用 echo $Var=print($var).'<br>';
print 实际上不是函数(而是语言结构),所以可以不用圆括号包围参数列表。和 echo 最主要的区别: print 仅支持一个参数,并总是返回 1。
$abce=10; //echo "abcd$abced";//错误 echo "abcd$abce*d";//自动解析$符号后面的所有字母数字下划线可以用其他符号分割 echo "abcd{$abce}d";//可以用括号分割 ${'myvar'}=1;//等价于$myvar=1; echo $myvar;
$b=10; echo decbin($b);//1010 //decbin ( int $number ) : string;返回一字符串,包含有给定 number 参数的二进制表示。所能转换的最大数值为十进制的 4294967295,其结果为 32 个 1 的字符串。 $a=4; echo '<br>'.$c=$b<<$a;//左移位,小数点向右移动顺序补0 //右移相反 m/2的n次方 echo '<br>'.decbin($c);//10100000
$strArray='abcdefg123456'; for($i=0;$i<strlen($strArray);$i++) //strlen ( string $string ) : int;返回给定的字符串 string 的长度。 { echo $strArray[rand(0,strlen($strArray)-1)].'<br>';//字符串可以当数组读取 }
$_GET['c']=25; function add($c,$d=25) { global $e; //在函数中使用全局变量 return $c+$d-$_GET['c']-$e; } $e=10; echo add(5);//实参不够使用默认参数值,不给默认值会默认为0
function myfunction($a,$b=true) { if($a&&!$b) { echo "hello!"; } } $s=array(0=>'my',1=>'call',2=>'$function',3=>' ',4=>'function',5=>'$a',6=>'$b',7=>'a',8=>'b',9=>''); $a=true; $b=false; echo $b;//假输出不了 $name=$s[0].$s[4].$s[9].$s[9].$s[9];//myfunction //空字符串不站位置 echo $name.'<br>'; echo $s[7].' '.$s[8].'<br>'; $name(${$s[7]},${$s[8]}); //a,b //${''}会转义里面的变量
require 和 include 几乎完全一样,除了处理失败的方式不同之外。require 在出错时产生 E_COMPILE_ERROR
级别的错误。换句话说将导致脚本中止而 include 只产生警告(E_WARNING
),脚本会继续运行。
===只在两者的数据类型和值都相同时才返回 True
$a=4; //echo $a+=$a+$a;//$a*3 //echo pow($a,2);//$a*$a echo $a<<=2; //$a*4
exit ([ string $status
] ) : void ; 输出一个消息并且退出当前脚本
通过$_SESSION访问会话变量(session)
/**********************web中的php*******************/
浏览器不允许来自某个域名的HTTP事务更改另一个域名下的cookie,否则这将造成严重的的安全问题。
$_REQUEST 默认情况下包含了 $_GET,$_POST 和 $_COOKIE 的数组。
htmlentities ( string $string
[, int $flags
= ENT_COMPAT | ENT_HTML401 [, string $encoding
= ini_get("default_charset")[, bool $double_encode
= true ]]] ) : string 本函数各方面都和 htmlspecialchars() 一样, 除了 htmlentities() 会转换所有具有 HTML 实体的字符。如果要解码(反向操作),可以使用 html_entity_decode()。
Cookie不设置失效时间会在浏览器关闭时自动失效
method 方法规定如何发送表单数据(form-data)(表单数据会被发送到在 action 属性中规定的页面中)。表单数据可被作为 URL 变量的形式来发送(method="get")或者作为 HTTP post 事务的形式来发送(method="post")。
<?php //echo $_POST['text'][0]; ?> <!--<form method="post"> <input type="text" name="text[]"> <input type="text" name="text[]"> <input type="submit" value="tjiao"> </form>-->
HTTPS传输发生时,浏览器与服务端立刻完成加密机制的握手,之后的数据都是加密传输而不是明文传输——包括URL,查询字串。而在HTTP传输中,它们都是明文传输的
对于收到的查询字串和POST信息,PHP只是简单的把元素添加进对应的超级变量数组中。结果就是如果有两个元素同名,前一个会被后一个覆盖。
$arraystr=array(0=>2,1=>2); setcookie('str',implode($arraystr));//implode ( string $glue , array $pieces ) : string;用 glue 将一维数组的值连接为一个字符串。 echo $_COOKIE['str'];
ob_clean();//ob_start ([ callback $output_callback [, int $chunk_size [, bool $erase ]]] ) : bool;打开输出缓冲,脚本将不会输出内容(除http标头外),相反需要输出的内容被存储在内部缓冲区中。 for($i=0;$i<10;$i++) { echo $i; } $coutput=ob_get_contents();//ob_get_contents ( void ) : string;返回输出缓冲区的内容 ob_end_clean();//ob_end_clean ( void ) : bool;清空(擦除)缓冲区并关闭输出缓冲 echo $coutput;
默认情况下,PHP把所有会话信息存储在/tmp文件夹中;在没有这个文件夹的操作系统中(比如Windows),必须在php.ini中给session.save_path设置一个合适的位置(如c:\Temp)
session会话默认在session.gc_maxlifetime 设置的时间过了后自动销毁
echo nl2br("abckdfg\nhiljl");//nl2br ( string $string [, bool $is_xhtml = TRUE ] ) : string;在字符串 string 所有新行之前插入 '<br />' 或 '<br>',并返回。
/*****************************数组*******************************************************/
键名为整数的为索引数组,键名为字符的为关联数组
$mu=array('red','green',42=>'blue','yellow'=>array('apple',9=>'pear','banana','orange'=>array('dog','cat','iguana'))); echo $mu['yellow']['orange'][1];数组数字索引默认在前面最大标签上增加
$array=array(1,1); foreach($array as $k=>&$v) //可以很容易地通过在 $value 之前加上 & 来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。 { $v=2; } print_r($array);
$ary=array('o','l','m'); echo serialize($ary);//string serialize ( mixed $value );函数用于序列化对象或数组,并返回一个字符串。
$arc=array('a','b','c'); print_r($arc); //array_flip($arc);//array_flip ( array $array ) : array;返回一个反转后的 array //print_r($arc); $acb=array_reverse($arc);//array_reverse ( array $array [, bool $preserve_keys = FALSE ] ) : array;返回一个单元为相反顺序的新数组。 print_r($acb);
$arr=array(0.1=>1,2); echo count(print_r($arr)); //1 count(array,mode);函数返回数组中元素的数目。数组键值只有整数和字符 print_r($arr);
$array=array(1,2,3); array_intersect($array,$array);//array_intersect ( array $array1 , array $array2 [, array $... ] ) : array;计算数组的交集 echo array_sum($array);//array_sum ( array $array ) : number;对数组中所有值求和返回结果。 array_count_values($array);//array_count_values ( array $array ) : array;函数用于统计数组中所有值出现的次数。
$ary=array(true=>'w',0=>2);//true会转换为1 var_dump($ary);
$str=''; $arr=array('a','b','c'); function wal($var) { global $str; $str.=$var; } array_walk($arr,'wal');//array_walk ( array &$array , callable $callback [, mixed $userdata = NULL ] ) : bool;使用用户自定义函数对数组中的每个元素做回调处理 echo $str;
/***********有点意思的题**************/ $array=array(1,2,3,5,8,13,21,34,55); $sum=0; for($i=0;$i<5;$i++) { echo '下标'.$array[$i].' 值'.$array[$array[$i]].'<br>'; $sum+=$array[$array[$i]]; } echo $sum;