0 PHP是解释型语言
一门语言到底是解释型还是编译型取决于是否保存了可执行代码。
注释
- HTML注释:
- CSS注释: /* CSS注释 */
- Javascript注释 a)单行注释: //单行注释 b)多行注释: /多行注释/
- PHP注释 a)单行注释: //单行注释 #单行注释 b)多行注释: /* 多行注释 */
- MySQL注释: a)单行注释: --单行注释 b)多行注释: /* 多行注释 */
1 PHP执行顺序
读取源码 词法分析 语法分析 编译(生成opcode缓存) 由zend engine执行 opcode缓存保存在内存中,所以PHP执行效率非常高。
2 PHP 定界符
a.标准风格(推荐使用)
<?php
echo 'web test 标准风格'
?>
b.短标记风格(默认不支持,要在php.ini配置 short_open_tag = On )
<?
echo 'web test 短标记风格'
?>
c.asp 风格(默认不支持,要在php.ini配置 asp_tags = On )
<%
echo 'web test asp风格'
%>
d.Script标记 脚本风格
<script language="php">
echo 'web test Script标记风格'
</script>
3 PHP解决显示乱码
a. 添加 echo ''; b. 通过 header('content-type:text/html;charset=utf-8');
4 输出语句:echo、print、print_r、var_dump
a. echo
echo '呵呵<br>'; //呵呵
echo 10,'<br>'; //10
echo true,'<br>'; //1
echo false,'<br>'; //空
echo array(10); //Array
echo('aa'); //aa
echo('aa','bb'); //报错
$n = print '呵呵<br>';
echo '<br>',$n
// 结论:
// 可以输出字符串和数字
// true输出1,false输出空,不要用echo输出布尔型数据
// 不能输出数组中元素,只能显示Array
// echo可以一次输出多个值,第个值用逗号隔开
// echo带括号只能输出一个
// $输出成功返回1,失败返回0
b. print
print '呵呵<br>'; //呵呵
print '10<br>'; //10
print true.'<br>'; //1
print false.'<br>'; //空
print array(10); //Array
$n = print '呵呵<br>';
echo '<br>',$n
// 结论:
// 输出规则和echo一样
c. print_r()
print_r('呵呵<br>'); //呵呵
print_r('10<br>'); //10
print_r(true.'<br>'); //1
print_r(false.'<br>'); //空
print_r(array(10)); //Array([0]=>10)
// 结论:
// 主要用来输出数组
d. var_dump
var_dump('呵呵'); echo '<br>'; //string(10) 呵呵
var_dump(10); echo '<br>'; // int(10)
var_dump(true); echo '<br>'; //bool(true)
var_dump(false); echo '<br>'; //bool(false)
var_dump(array(10)); //array(1) { [0]=> int(10) }
// 结论:
// 输出布局类型
// 输出类型
5 PHP语法的一般特点
a. 语句必须以分号(;)结尾 b. 关于大小写:变量区分大小写,关键定(if,else,for ...)不区分大小写
6 变量(计算机内存中的一段空间)
a. 变量的命名规则
- 变量必须心
name。$不是变量名的一部分,仅表示变量名的开妈
- 除了$以外,以字母,下划线开头,后面跟的是字母、数字、下划线
b. 传值和传址
传值:
<?php
$a=10;
$b=$a;
$a++;
echo $a,'<br>'; //11
echo $b,'<br>'; //10
?>
传址:
<?php
$a=10;
$b=&$a; //&表示取出变量的地址
$a++;
echo $a,'<br>'; //11
echo $b,'<br>'; //11
?>
总结上面例题:传值,保存值的空间是两个,更改一个空间的值不影响另外的变量;传地址,保存值的空间就一个,更改一个变量的值,另一个变量也会变化,因为两个变量指向同一个空间。
c. 销毁变量
$a=10;
$b=&$a; //&表示取出变量的地址
unset($a); //销毁的只是变量名
echo $b //10
unset() 销毁的只是变量名,变量的值由PHP垃圾回收机制去销毁,垃圾数据就是没有变量引用的数据
d. 超全局变量
$_COOKIE
$_ENV
$_FILES
$_GET
$_POST
$_REQUEST
$_SERVER
$_SESSION
$GLOBALS
超全局变量以$_开关 所有的超全局变量数据类型都是数组
示例:$_GET 保存get提交的所有数据
<form action="" method="get" action="">
姓名:<input type="text" name="name">
密码:<input type="password" name="pass" id="">
<input type="submit" value="提交">
</form>
<?php
var_dump($_GET);
?>
示例:$_POST 保存get提交的所有数据
<form action="" method="post" action="">
姓名:<input type="text" name="name">
密码:<input type="password" name="pass" id="">
<input type="submit" value="提交">
</form>
<?php
var_dump($_POST);
?>
示例:$_REQUEST 保存get和post的数据
<form method="post" action="?add=北京">
姓名:<input type="text" name="name">
密码:<input type="password" name="pass" id="">
<input type="submit" value="提交">
</form>
<?php
var_dump($_REQUEST);
// array(3) { ["add"]=> string(6) "北京" ["name"]=> string(3) "123" ["pass"]=> string(3) "456" }
var_dump($_GET); echo '<br>';
var_dump($_POST); echo '<br>';
?>
示例:$_REQUEST 保存 get 和 post 的值,默认如果有同名的元素 post 的值将 get 的值覆盖(php.ini可以修改规侧)
<form method="post" action="?name=北京">
姓名:<input type="text" name="name">
密码:<input type="password" name="pass" id="">
<input type="submit" value="提交">
</form>
<?php
$_REQUEST:array(2) { ["name"]=> string(4) "user" ["pass"]=> string(4) "pass" }
$_GET:array(1) { ["name"]=> string(6) "北京" }
$_POST:array(2) { ["name"]=> string(4) "user" ["pass"]=> string(4) "pass" }
?>
php.ini
request_order = "GP" // request_order = "PG"
e. 可变变量
<?php
$a = '呵呵';
$b = 'a';
echo $$b;
// $$b: $b里保存的变量a,$a='呵呵',所有$$b等于呵呵
?>
<?php
function openjpg(){
echo '打开jpeg';
}
function opengif(){
echo '打开gif';
}
function openpng(){
echo '打开png';
}
function openImsge($type){
if($type == 'jpg'){
echo '打开jpeg';
}elseif($type == 'git'){
echo '打开gif';
}elseif($type == 'png'){
echo '打开png';
}else{
echo 'error';
}
// 可变
$fn = 'open'.$type;
$fn();
}
?>
7 常量
7.1自定义常量
当一个数据在脚本执行的周期内不发生变化,可以将这个数据保存在常量中。 常量前面没有$。 语法:define(常量名,常量值,是否区分大小写),默认是区分大小写的。 定义常量可以用特殊字符,但是调用的时候必须通过 'constant' 关键字调用 常量一但定义就不能重新定义,可以在定义常量的时候先通过 defined函数判断常量是否已经定义 常量的规范写法是大写
示例
define('NAME','李白', false); //true表示不区分大小写,false区分大小写
echo NAME,'<br>'; //李白
echo name,'<br>'; //报错
定义常量可以用特殊字符
define('^_^','开心',true);
echo constant('^_^'),'<br>'; //开心
判断常量是否已经定义
if(!defined('NAME')){
define('NAME','杜甫');
}else{
echo '已经定义';
}
还可以用const来声明常量
const NATION = '中国';
echo NATION;
7.2 预定义常量
echo PHP_VERSION //php版本
echo PHP_OS //运行的操作系统
7.3 魔术常量
echo __LINE__; //当前行号
echo __FILE__; //当前文件
7.4显示所有常量
var_dump(get_defined_constants());
//true:表示将所有的常量分类显示。