php学习篇之---php变量、数据类型、函数、混合写法~
php书写语法:
1.常见php表现形式:
<?php 代码 ?>
<? ?>php短标签,不提倡用是否支持次标签取决于服务器配置 (window下不适用)
<%%>asp标签,php也可以使用,但不推荐
<script language="php"></script>:可在html中用
2.php中双引号可以解析变量和标签,单引号不可以
双引号中加双引号写入变量需用转义字符"\",否则报错;
$name = "小明";
$name.="欢迎\"$name\"";
echo $name;
3.可以在任意html文档中插入php语句,一个网页被请求的时候,php解析器会先分析文档里的php语句,将php部分处理后,与静态网页部分一起输出到浏览器
前后台交互最简单的例子🌰:a标签
//这是一个php文件,以下是php中html代码
//实现过程,点击a标签向后台发送请求进行页面跳转,发送请求过程中传给后台一个参数myName和参数的值baowenxin
//后台接收参数值并在点击a标签之后输出这个值
<?php
$_GET:接收的是数组
?>
<?=$_GET['myName']?>您现在正在访问的站点是<?=$_SERVER['HTTP_HOST']?>
<a href="http://localhost/myphp/lesson1.php?myName=baoWenxin">我的站</a>
PHP变量
1.语法规则:使用$声明
变量名以数字、字母、下划线组成
数字不能开头,中间不能有空格,严格区分大小写
2.变量的赋值:
(1)直接赋值:
$a = 10; $b = $a; echo $a,$b;//10 10
$b = 20;
echo $a,$b;//10 20
(2)引用赋值:&符连接,a和b指向同一个地址,a变b也变
$a =10;
$b = &$a;
echo $a,$b;//10,10
$b = 20;
echo $a,$b;//20,20
(3)变量的变量
$a = "hello";
$hello = "world";
echo $$a; //world
$a = "hello";
$$a = "world";
echo $hello; //world
常量:不能改变得值
定义:define("AB",“你好”,true/false);//是否区分大小写
php数据类型:九种数据类型:
四种标量:boolean(布尔)、intrger(整型)、float(浮点型,也称作double)、string(字符串)
三种复合类型:array(数组)、object(对象)、callable(可调用)
两种特殊类型:resource(资源)、NULL(无类型)
检测数据类型:gettype()函数
布尔(boolean):
(1)true或false 不区分大小写
(2)作为if条件时自动判断,返回true或false
(3)以下情况返回false:false 、0 、”0“、空字符”“、null、array("")、尚未赋值的变量
数字类型(NUmber):
$number =1;
$number2 =-1;
$number3 =0123;//八进制
$number4 =0x165;//十六进制,0x开头]
$number =$number+$number2/5;和数学运算一样
字符串(string):
//①双引号:其中的变量会被变量值替代
$name="cindy";
$str="Jerry said:\n'I love $name'";
echo $str;---Jerry said:'I love Cindy'
//②单引号:出现的变量不会被变量的值替代
$str='Jerry said:\n"I love {$name}a" ';
echo $str;---Jerry said:\n"I love $name"
注意:双引号可解析变量以及转义字符,单引号不行
//③定界符 (heredoc):定界符由任意三个大写字母,表示开头和结尾,开始的后面什么结束的前后都不能加
$str=<<<AAA
<h1>
<a>0000</a>
</h1>
AAA;
④"."语法是php中的字符串拼接
数组:
//普通数组 $arr = [1,2,3,4]; $week = array("周一","周二","周三"); //关联数组: $arr=array("魅力之都"=>"上海","人间天堂"=>"苏杭","人间火炉"=>"重庆"); echo $arr["人间天堂"];// [人间天堂]->重庆 //二维数组:数组的元素还是数组 $arr = array(); $arr[0]=array(1,2,3,4); echo $arr[0][2];//3 //数组的自动补全 $arr =array(); $arr[0]="1"; $arr[1]="2"; $arr[2]="3"; $arr[] = "four";//如果为空,取当前最大的下标加1 $arr[] = "five"; $arr[10]="ten"; print_r ($arr); //结果如下:
数据类型的转换: 运算+时
$num = "100abc";//开始的部分是数字,进行运算就会取数字
$num = $num + 100;
//当字符串与数字类型的进行数学运算时,会自动转换成数字类型,转换成合法的十进制数字,编程时尽量避免混淆的语法;
echo $num; //100
PHP语句:赋值语句 、条件语句、三元运算符、循环语句
(1)浮点数运算存在精度问题:
$num = 10;
$num=1.1;
$num2 = 2.2;
if($num+$num2==3.3){
echo "1.1+2.2=3.3";//只是无限接近于3.3,不等于3.3
}else{
echo "1.1+2.2!=3.3";
}
//结果:1.1+2.2!=3.3;
(2)短路运算,或运算只要第一个条件满足后,第二个条件表达式忽略
一、$num1=5不满足,就会走或者后面的语句,num2会++
$num1 =5;
$num2 = 20;
if($num1>10||$num2++>25){ echo "$name"; }else{ echo "--";
} echo $num2;//21
二、$num1 =15满足>=10,$num2不会++
$num1 =15;
$num2 = 20;
if($num1>=10||$num2++>25){
echo "$name";
}else{
echo "--";
}
echo $num;//20
(5)循环语句
html和php混合写法 :以下面的形式用foreach写出
$arr2[0] = array("小明","今天心情不好","2017-1-1","今天天气不错");
$arr2[1] = array("小明","今天心情不好","2017-1-1","今天天气不错");
$arr2[2] = array("小明","今天心情不好","2017-1-1","今天天气不错");
<table>
<tr>
<td>留言人</td>
<td>留言</td>
<td>留言日期</td>
</tr>
<?php
foreach($arr2 as $key=>$val){
?>
<tr>
<td><?echo $val[0]?></td>
<td><?echo $val[1]?></td>
<td><?echo $val[2]?></td>
</tr>
<tr>
<td colspan="3">留言详情:<?echo $val[3]?></td>
</tr>
<?php
}
?>
</table>
PHP输出:主要(echo、print_r、var_dump)
echo 输出一个或多个数字和字符串
print 输出一个字符串
函数:有返回值(即便没有用)
ptint():只能打印出简单类型变量的值(如int,string)
print_r() :输出数组,可以打印出复杂类型变量的值(如数组、对象)
var_dump() 输出所有类型,查看某个表达式的值和类型 例如:$num =0.5 var_dump($num) ==>
获取数据类型方法:gettype($num)
使用:echo gettype($num)==》直接输出类型
PHP函数:
函数需要调用才会执行。可以定义若干个形参
形参:区别于js:形参可以设置默认值,但是需放在无默认值的右边
function myfunc($par2,$par="默认形参"){
echo $par."hello world";
}
myfunc(10);//输出 10helloworld;如果没有实参会报错,但会输出默认参数
php函数闭包:use() 内层函数调用外层变量的时候要用use()将变量传递给内部的函数
function getFunc(){ $array=array(); for($i=0;$i<10;$i++){ $array[$i]=function()use($i){//定义函数并返回给array数组 return 10+$i; }; } return $array; }
//调用
$funcArray = getFunc();
echo $funcArray[0]();//10
php函数作用域:
函数体内部定义的变量只在函数体内有效
$a = 10;
function addFunc($a){
echo $a =$a-3;//7
}
addFunc(10);
echo $a;//10
//在函数体内部可以使用global关键字将变量定义为全局变量;
$a = 10;
function addFunc($a){
global $a;//
echo $a =$a-3//7
}
addFunc(10);
echo $a;//7
php函数引用传值:
在形参前面添加&符
传的是变量本身,而不是它的值
function myFunc_2($a){
$a--;
echo $a;
}
$b = 10;
myFunc_2($b);
echo $b;//9
内置函数:
empty():判定一个变量是否存在,不存在返回true,存在返回false;
为空的情况:变量未定义、定义值但为”“、0、”0“、null
不为空:只有变量在定义之后又并且赋值,且不为空、0、”0“、null
isset():判断一个变量是否定义
只有null时是未定义,0、”0“、”“、true、false都是已定义