MR JD的 PHP之路
局部变量与全局变量
1.局部变量
function test(){
$a=1;//局部变量$a,尽在这个函数内部有效
}
echo $a;
2.全局变量
$i=10;//全局变量(外部变量)
define('MY_NAME','卢克卢');
function test(){
echo MY_NAME;
global $i;//声明$i为全局变量,然后再这个函数内部就可以使用$i
echo $i;
$a=1;
}
test();
3.静态变量
function test(){
static $a=10;//静态变量$a,初始化静态变量,尽在第一次调用的时候执行
echo ++$a;//当第二次执行这个函数的时候$a这个变量依然存在并且里面的也值依然存在!
}
函数参数
1.按值传递参数
默认的,我们在传递参数的时候默认使用的就是这个方式!
对形式参数的操作,根本不会影响到实际参数(变量)的值,两者相当于没有联系!
2. 按引用传递参数
按引用传递参数,相当于形式参数和实际参数指的是同一个人,只是名字不一样,对于形式参数的操作会直接影响到实际参数
<?php
/*
* 按引用传递参数
* */
function test(&$a){
echo ++$a;
}
$i=10;
test($i);
echo '<br />'.$i;
?>
3.可变长度参数列表
PHP提供给我们的,可以直接使用
func_get_args();
func_get_arg();
func_num_args();
这三个函数可以使用在我们的自定义函数内部,能够返回给我们一些关于参数的信息!
<?php
/*
* 可变长度参数列表
* */
function test(){
//var_dump(func_get_args());//然后做一些其他的操作
//var_dump(func_get_arg(4));//调用这个函数的时候可以传入一个值表示获取第几个实际参数(重0开始)
//var_dump(func_num_args());//返回传入所在自定义函数的参数的个数!
}
test(21,323232,4343,'单位取得完全','dwqdwqdqw');
?>
4.可变函数(变量函数)
直接把函数赋值给变量
可变函数不能用于例如 echo,print,unset(),isset(),empty(),include,require 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。
<?php
/*
* 可变函数(变量函数)
* */
function test(){
echo '我是test函数!';
}
$a='test';//把函数名字加上引号,赋值给变量即可
$a();//test();
$b='echo';
$b('dqwdwqdqdqw');
?>
数组
$stu[]="jwg";
$stu[]=23;
$stu[]=true;
$stu[]=88.9;
//输出格式
1 print_r($stu);
2.var_dump($stu); //会显示格式
一维数组创建
第一种方式:
$stu[]
1. 在未指定键名的情况下,给数组赋值,键名默认从零开始,依次增大
2.也可手动创名:
如: $stu[10] = “jwg”;
$stu[20] = true;
$stu[] = 78.9;
如:$stu[‘name’] = “jwg”;
$stu[‘age’] = 24;
$stu[‘sex’] = true;
第二种创建方法:
1.$stu1 = array(“grs”,22,true,78.9);
print_r($stu1);
2.
$stu2 = array(
‘name’ => “grs”,
‘age’ => 22,
‘sex’ => false);
print_r($stu2);
数组的遍历
两种方法for和foreach
遍历数组:每个都经历一遍的意思
1)for循环
用的比较少,因为有缺陷
2)foreach语句来实现遍历数组的目的
foreach(数组变量 as 变量1){
//每次循环执行的语句
变量1代表当前正在经历(访问)的数据
}
foreach(数组变量 as 变量1=>变量2){
//每次循环执行的语句
变量1代表当前正在经历(访问)的数据的索引值
变量1代表当前正在经历(访问)的数据
}
1.
$stu1 = array("grs",22,true,78.9);
for($i =0;$i<count($stu1);$i++){
echo $stu1[$i]."<br / >";
}
2.
$stu2 = array(
'name' => "grs",
'age' => 22,
'sex' => false);
foreach($stu2 as $key =>$value){
echo $key."=>".$value."<br />";
}
二维数组的创建
$students = array(
1 =>array("jwg",22,true,78.9),
2 =>array("grs",23,true,66),
3 =>array("cjf",24,false,88)
);
print_r($students);
//可以单独访问其中的元素:
//如:echo $students[2][3] //结果为66
//==========================同理:
$students = array(
1 =>array(
'name' => "jwg",
'age' => 22,
'seex' => true,
'grades' =>78.9
),
2 =>array("grs",23,true,66),
3 =>array("cjf",24,false,88)
);
//访问元素:
echo $students[1]['grades'];
预定义超全局数组变量
已经定义好了(存在)的变量(存放的数据的类型是数组)。
超全局:超级全局变量,作用域(有效区域)!
传递数据(提交数据)给服务器端主要两种方式
1.get方式
比如:
?参数名=参数值&参数名=参数值…
http://localhost/demo5_3/index.php?参数名=参数值
在服务器端(请求的php文件这边)可以通过$_GET来获取到
$_GET索引值为参数名,索引值对应的数据就是参数值
2.post方式
比如表单 post发送过来的!
可以通过$_POST来获取到!
<?php
var_dump($_GET);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>预定义超全局数据变量</title>
</head>
<body>
<form method="get"> //action默认提交到本页面
姓名:<input type="text" name='username' /><br />
性别:<input type="text" name='sex' /><br />
<input type="text" name='dwqdwqdqw' />
<input type="submit" value='提交' />
</form>
</body>
</html>
与数组有关的一些函数
array_count_values
1. array_count_values
$array = array(1, “hello”, 1, “world”, “hello”);
$arr=array_count_values($array);//函数返回数组类型的数据
print_r($array);//原来的数组不会受到任何影响
array_key_exists
$search_array = array(‘first’ => 1, ‘second’ => 4);
var_dump(array_key_exists(‘second’,$search_array));
array_search
$array = array(0 => ‘blue’, 1 => ‘red’, 2 => ‘green’, 3 => ‘red’,4=>15);
var_dump(array_search(‘15’, $array,true));
搜查指定的值,第三个参数如果为true则还比较数值类型
in_array
检查数组中是否存在某个值
$os = array(“Mac”, “NT”, “Irix”, “Linux”);
var_dump(in_array(‘Mac’, $os));
第三个参数如果为true则还比较数值类型
list
$arr=array(60,80,100);
list($sunshengli,$xiaohong,$xiaoming)=array(60,80,100);
echo $sunshengli; //输出结果为60
从右边第一个参数开始赋值
asort
$students=array(
'sunshengli'=>60,
'lilei'=>80,
'hanmeimei'=>100,
'zhangsan'=>90
);
asort($students);
print_r($students);
array_filter
function odd($var)
{
return($var % 2 == 1);
}
function even($var)
{
return($var % 2 == 0);
}
$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);
echo "Odd :\n";
print_r(array_filter($array1, "odd")); //对偶数进行过滤
echo "Even:\n";
print_r(array_filter($array2, "even")); //对奇数进行过滤
字符串处理
去除空格或其他字符函数 trim
$str=' abc ';
var_dump($str);
var_dump(trim($str));
$str='abcabcdefac';
var_dump($str);
var_dump(trim($str,'bac'));//如果要去除多个字符可以连着写!
大小写转换函数
$str='test';
var_dump($str);
$str1=strtoupper($str); //转大写
var_dump($str);
$str='TeSt';
var_dump($str);
var_dump(strtolower($str)); //转小写
var_dump($str);
字符串查找函数
1.substr_count
$str='testteste';
var_dump(substr_count($str,'te'));
$text2 = 'gcdgcdgcd';
echo substr_count($text2, 'gcdgcd');
$str='testteste';
var_dump(substr_count($str,'te',1,8));//不能超出字符串
2.strpos //查找字符串首次出现的位置
$str='testteste';
var_dump(strpos($str, 't1'));
if(strpos($str, 't')===false){
echo '没找到!';
}else{
echo '找到啦!';
}
$str='testteste';
var_dump(strpos($str, 't',1));
3.strstr //查找字符串首次出现的位置从第一次出现的位置到结尾字符串
$str='testteste';
var_dump($str);
var_dump(strstr($str,'s'));
var_dump(strstr($str,'s',true)); //返回s之前的位置
字符串替换函数
1.str_replace
<?php
$str=array(
'abc123abc',
'123abcabc',
'abcab123c'
);
var_dump($str);
echo "<br />";
$str1=str_replace(array('1','2','3'),array('一','二','三'),$str,$count);
echo $count."<br />";
var_dump($str1);
?>
与html标签相关的函数
htmlspecialchars
$str=<<<START
<p style="color:red;font-size:128px;">单位确定为取得完全</p>" '
START;
echo $str;
echo "\n";
echo htmlspecialchars($str,ENT_COMPAT); //后面参数可加可不加
会对一些特殊字符进行转义
strip_tags
从字符串中去除HTML和PHP标签
第二个参数表示留下那个标签
$str=<<<START
<p style="color:red;font-size:128px;">hhhhhhhhhhhhhhhhhhh</p>
<div style="color:red;">hhhhhhhhhhhhhhhh</div>
START;
//echo $str;
//echo "\n";
echo strip_tags($str,"<div><p>");
字符串截取函数 substr
返回字符串由第二个参数到第三个参数的位置
1.substr
$str='testdqwdwqdwqdqdwq';
echo substr($str,3,2); //返回td
$str='test';
echo substr($str,-3,2); //返回qd
字符串分隔函数
1. explode
$str='test,test1,test2,test3';
var_dump(explode(',',$str,2)); //以逗号进行分割分成2个
2.str_split
将一个字符串转换为数组
$str='test';
var_dump(str_split($str,3));