变量
1,PHP变量的定义和使用
通过正则表达式表示为:字母 下划线 开头 ^[a-zA-Z_]\w*
2,PHP变量的作用域
$var1 = 10;//这个就是全局范围的变量
function test(){
//$var1 = 20;//在函数内部定义的变量,就是局部范围的变量,作用范围只能在函数内不起作用
//如何在局部范围内使用全局变量
global $var1;//方法一
echo $var1;
echo $GLOBALS['var1'];//方法二(推荐)
}
test();
echo $var1;
【如何在局部范围内使用全局范围的变量?使用global】
3,变量的赋值(值传递;引用传递)
$num1 = 10;
$num2 = $num1;
$num1=20;
echo $num2;//10 php默认的变量赋值是值传递,不改变原来变量的值
echo '<br/>';
$num3 = 10;
$num4 = &$num3;
$num3 = 20;
echo $num4;
//20 这里是引用传递通过&来实现,引用的是保存在内存地址中得值,如果修改会修改内存地址中得值
4,超全局变量(预定义的变量)
① $GLOBALS 保存全局变量
② $_SERVER 保存服务器信息
③ $_GET 保存get数据
④ $_POST 保存post数据
⑤ $_FILES 保存提交的文件
⑥ $_COOKIE 保存得到的cookie
⑦ $_SESSION 保存session数据
⑧ $_REQUEST 保存请求数据
⑨ $_ENV 保存环境
常量
1. //常量的定义define("常量名",“常量值”);
define("PATH",__FILE__);
echo PATH;
echo '<br/>';
//判断某个常量是否被定义了
echo defined("PATH");
if(defined("PATH")){
echo PATH;
}else {define("PATH",__FILE__);}
【define()函数可以定义常量;defined()判断某个常量是否被定义了】
2.特点:(1)常量的定义不用使用$
(2)常量不用理会作用域,可以在任何地方使用
(3)常量一旦被定义,不能被重新复制
魔术常量(7个):
__FILE__ 获得当前文件的绝对路径和文件名
__LINE__ 文件当前的行号
控制结构
1,return;
(1)函数中使用return,立即停止函数的执行,将函数的值返回;
(2)在php脚本中使用,停止脚本文件代码的执行
function control(){
$a=10;
$b=20;
return $a+$b;//如果在函数内部使用return 会停止函数运行并将结果返回
echo 'hello';
}
$a=10;
$b=20;
return ;//如果在php的脚本中使用return 会停止脚本运行;
2,require_once()
和require()作用一样,都是引入外部文件,区别在于require_once(),如果该文件已经被包含,则不会再次包含,避免函数重定义和变量的重新赋值
3,include()和require()的区别在于,include()重复包含文件时,产生警告级别的错误;require()产生致命错误
函数
函数参数的传递默认是值传递,所以即使在函数内部改变了参数的值,也不会改变函数外面参数的值
想要函数的参数采用引用传递,在参数前面 &
PHP的数据类型
1,标量类型: 字符串 整型浮点型布尔型
字符串:
(1)单引号双引号
$str1 ="hello world";//双引号会解析变量----执行速度慢
$str2 ='hello world';//单引号会将内容原封不动的输出----执行速度快
(2) heredoc :heredoc擅长定义复杂的字符创
(3)常用的字符串函数(重点)
①字符串查找://strpos(haystack,needle);查找字符串首次出现的位置
//strrchr() 从字符串最后一次出现的位置开始,返回子字符串
Eg:$str='this is mymacbook';
echo strpos($str,'m');//返回第一次出现的位置
echo strrchr($str,'m');//返回最后出现的字符之后的字符串
②字符串替换://trim()去掉字符串首尾空白字
//str_replace(查找的字符串,替换的字符串,在哪个字符串中查找);
//substr_replace()把字符串的一部分替换成另一个字符串
//substr(string,start,length);返回字符串的子串
Eg:$str3=' hello ';
$str4=trim($str3);//去除空格
echo strlen($str4);//输出字符串的长度
echo'<hr/>';
$str5=__FILE__;
$str6=str_replace('string.php','',$str5);
$str7=str_replace('\\','/',$str6);
echo $str7;
echo'<hr/>';
$str8='this is my macbook';
echo substr($str8,8);
echo'<hr/>';
echo substr_replace($str8,'iphone',11);
③ 字符串比较:
//strcasecmp()以不区分大小写的方式比较字符串,返回0表示字符串相等
//将字符串全部转化为小写 strtolower($str1);
//将字符串全部转化为大写 strtoupper($str2);
Eg:$name1="USERNAME";
$name2="username";
//strcasecmp();以不区分大小写的形式进行比较字符串
echo strcasecmp($name1,$name2);
//将字符串全部转换成大写或小写strtoupper()转化为大写
//die();//exit()停到这里不向下进行
if($name1==strtoupper($name2)){
echo 'true';
}else{
echo 'false';
}
④字符串拆分://explode将字符串根据某个定界符分割成一个数组
//implode()通过一个定界符使数组元素连接成一个字符串
Eg:$str_1='php,.net,3g,java';
$str_2=explode(',',$str_1);
//根据某个定界符将字符创分割成一个数组,
//数组的元素就是根据定界符分割成的几个部分
var_dump($str_2);
echo'<hr/>';
//implode()根据某个定界符 将数组元素连接起来生成一个字符串
$arr=array('php','.net','3g','java');
echo implode(',',$arr);
echo'<hr/>';
正则表达式匹配
//php支持正则表达式正则可以比喻成一个筛子 js可以使用 php也可以使用
preg_match('/(HTTP:\/\/W{3}\.)(.+)/i','HTTP://WWW.sina.com',$match);
//如果提供了第三个参数 会将在整个正则表达式匹配的所有结果放到数组中
//将sina.com 替换成360.com
echo preg_replace('/sina\.com/','360.com','HTTP://WWW.sina.com')
2,复合类型:数组对象
数组
(1)使用for()遍历数组,适合下标从0开始,连续的整型索引数组
(2)foreach()遍历数组
Eg:$array= array('php','.net');
//count()统计数组元素的个数
for($i=0;$i<count($array);$i++){
echo $array[$i];
}
echo '<hr/>';
$array= array('php','.net','subject'=>'java','name'=>'xiaoming');
foreach ($array as $value){//每循环一次 将当前的索引对应的值付给$value
echo $value;
}
数组指针
(1)current()获得当前数组指针指向的数组元素
(2)next() 将数组的指针指向下一个
(3)prev() 将数组的指针向前移动一个
(4)reset() 重置数组指针
(5)end() 将数组指针移动到最后
Eg:$arr2=array('php','.net','subject'=>'java','name'=>'xiaoming');
//echo current($arr2);
next($arr2);
// echo prev($arr2);
echo reset($arr2);//重置
常用的数组函数:
array_push() 入栈,讲一个或多个元素压入数组的末尾
array_pop() 出栈,将数组最后一个元素弹出
array_shift() 将数组开头的元素移出
array_unshift() 在数组开头插入一个元素
eg:$array=array('php');
array_push($array,'.net');//入栈,向数组末尾添加一个元素
var_dump($array);
echo '<hr/>';
var_dump(array_pop($array));//出栈将数组中的最后一个元素弹出
echo '<hr/>';
$array=array('php','.net','3g');
echo array_shift($array);
echo '<hr/>';
array_unshift($array,'c');
var_dump($array);
数组排序:
sort() 删除数组原有的键名
rsort() 对数组逆向排序,删除数组原有的键名
asort() 对数组正向排序(按照元素值),不会删除数组原有的键名
ksort() 对数组按照键名排序
eg:$array=array('php','subject'=>'.net','3g');
//sort($array);//先删除数组的键名 再根据数组的值排序
//rsort($array)
//ksort($array);//按照键名排序优先排特殊字符数字字母
asort($array);//不删除原有的键名按照数组元素的值排序
var_dump($array);
3,特殊类型: Null resource(资源)