简介
- PHP (Hypertext Preprocessor)超文本预处理器,是一种通用开源脚本语言,其脚本在服务器上执行,可免费下载使用。
- php是一种创建动态交互性站点的强有力的服务器端脚本语言,也可以用来做移动app的接口。
- PHP 文件可包含文本、HTML、JavaScript代码和 PHP 代码。
- PHP 代码基本上是由基础语法、重要语句、变量、函数组成。
- PHP 代码在服务器上执行,结果以HTML 形式返回给浏览器。
- PHP 可以生成动态页面内容,创建、打开、读取、写入、关闭服务器上的文件,收集表单数据,发送和接收 cookies,添加、删除、修改您的数据库中的数据,限制用户访问您的网站上的一些页面,加密数据。
- PHP 可在不同的平台上运行(Windows、Linux、Unix、Mac OS X 等),几乎与所有的正在被使用的服务器相兼容(Apache、IIS 等),并且PHP 提供了广泛的数据库支持。
- PHP 可以在 官网免费下载资源。
开发工具
PHP服务器组件
- PHP服务器组件有WampServer、XAMPP、AppServ、phpStudy、phpnow等。
- 使用推荐: WampServer.
PHP IDE
- PHP IDE(Integrated Development Environment,集成开发环境) 有Zend Studio、Eclipse for PHP、EasyEclipse等。
- 使用推荐:easyeclipse for php.
MySql管理工具
- MySql管理工具常用的有:Navicat for Mysql、PhpMyAdmin。
- 使用推荐:Navicat for Mysql.
文本编辑器
- 常用的编辑器有:Notepad++、editplus、ultraedit等。
PHP 基本语法
- PHP 脚本可以放在文档中的任何位置。
- PHP 脚本以 <?php 开始,以 ?> 结束。
<?php
// PHP 代码
?>
- PHP 文件的默认文件扩展名是 “.php”。
- PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。
- PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。
- php注释:
// 单行注释
/*
多行
注释
*/
hello word
- hello word开始学起,将文件保存,重命名为1.php
<!DOCTYPE html>
<html>
<body>
<?php
echo "Hello World!";
?>
</body>
</html>
- 将文件放入phpstudy根目录下,在浏览器输入http://localhost/1.php
PHP变量
PHP变量规则
- 变量以 $ 符号开始,后面跟着变量的名称。
- 变量名必须以字母或者下划线字符开始。
- 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )。
- 变量名不能包含空格。
- 变量名是区分大小写的($y 和 $Y 是两个不同的变量)。
- PHP 没有声明变量的命令,变量在您第一次赋值给它的时候被创建。
PHP变量赋值
- 设置变量a为5,b为4,c为6,d求abc的和。
<?php
$a=5;
$b=4;
$c=6;
$d=$a+$b+$c;
echo $d;
?>
- 设置文本变量,当赋一个文本值给变量时,在文本值两侧须加上引号。
<?php
$txt="Hello world!";
?>
PHP变量作用域
- 变量的作用域是脚本中变量可被引用或使用的部分。
- PHP 有四种不同的变量作用域:local、global、static、parameter
- 在所有函数外部定义的变量,拥有全局作用域。在函数内部声明的变量是局部变量,仅能在函数内部访问。
- 注:php具有独立的作用域,局部变量会覆盖全局变量,即使局部变量中没有全局变量相同的变量,也会被覆盖。
- 函数内访问全局变量:global 关键字、$GLOBALS[index] 的数组。
- 当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,需要在第一次声明变量时使用 static 关键字。
- global 关键字:用于函数内访问全局变量,在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字。
在这里插入代码片<?php
$a=2;
$b=3;
function test1()
{
global $a,$b;
$b=$a+$b;
}
test1();
echo $b; // 输出 5
?>
- $GLOBALS[index] 的数组:PHP将所有全局变量存储在这个数组中。 index的位置保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
<?php
$a=2;
$b=3;
function test2()
{
$GLOBALS['b']=$GLOBALS['a']+$GLOBALS['b'];
}
test2();
echo $b;// 输出 5
?>
- 局部变量Static 作用域
当一个函数完成时,它的所有变量通常都会被删除。当不希望某个局部变量不要被删除时,需要在第一次声明变量时使用 static 关键字。之后每次调用该函数时,该变量将会保留着函数前一次被调用时的值。 - 参数作用域
参数是通过调用代码将值传递给函数的局部变量。
<?php
function test3($a)
{
echo $a;
}
test3(2);// 输出 2
?>
PHP输出方式
- PHP在浏览器输出文本的基础指令有两种:echo 和 print。
- echo 和 print 区别:
echo 语句
- echo 是一个语言结构,使用的时候可以不用加括号,也可以加上括号: echo 或 echo()。
- 使用 echo 命令输出字符串
<?php
echo "<h1>哈哈哈哈!</h2>";
echo "嘻嘻嘻!<br>";
echo "嘿嘿嘿!<br>";
echo "我", "真", "是", "个", "小", "天", "才。";
?>
- 运行结果如下
- 使用 echo 命令输出变量和字符串
<?php
$txt1="今天也要开心呀";
$txt2="哈哈哈哈";
$ways=array("吃饭","工作","睡觉");
echo $txt1;
echo "<br>";
echo "正在 $txt2 中";
echo "<br>";
echo "今天份的开心源自于是{$ways[0]}";
?>
- 执行结果如下
print 语句
- print 同样是一个语言结构,可以使用括号,也可以不使用括号: print 或 print()。
- 使用 print 命令输出字符串
<?php
print "<h1>哈哈哈哈!</h2>";
print "嘻嘻嘻!<br>";
print "嘿嘿嘿!<br>";
?>
- 使用 print 命令输出变量和字符串
<?php
$txt1="今天也要开心呀";
$txt2="哈哈哈哈";
$ways=array("吃饭","工作","睡觉");
print $txt1;
print "<br>";
print "正在 $txt2 中";
print "<br>";
print "今天份的开心源自于是{$ways[0]}";
?>
- 运行结果同echo,但是由于print不能输出多个字符串,所以我真是个小天才,它不能写成如下命令:
print "我", "真", "是", "个", "小", "天", "才。";
,会显示错误。
PHP EOF(heredoc)
- PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。
- 使用说明:
- 必须后接分号,否则编译通不过。
- EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致即可。
- 结束标识必须独自占一行(即必须从行首开始,前后不能衔接任何空白和字符),并且在结束标记末尾要有分号,结束标记必须顶头写。
- 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
- 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义。
- 实例:
<?php
echo <<<EOF
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
EOF;
// 结束需要独立一行且前后不能缩进或空格及含有其他字符且在结束标记末尾要有分号,结束标记必须顶头写。
?>
- 位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。并且变量不需要用连接符 . 或 , 来拼接,例如:
<?php
$name="hhh";
$a= <<<EOF
"abc"$name
"123"
EOF;
echo $a;
?>
- 运行结果如下
PHP 数据类型
String(字符串)
- 一个字符串是一串字符的序列,可以将任何文本放在单引号和双引号中,如
$x = "Hello world!";
或者$x = 'Hello world!';
Integer(整型)
- 必须至少有一个数字 (0-9)
- 不能包含逗号或空格
- 没有小数点
- 可以是正数或负数
- 可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。
<?php
$x = 12345;// 正数
var_dump($x);
echo "<br>";
$x = -345; // 负数
var_dump($x);
echo "<br>";
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
?>
-
注:PHP var_dump() 函数返回变量的数据类型和值
-
运行结果如下
Float(浮点型)
浮点数是带小数部分的数字,或是指数形式。
<?php
$x = 10.365;
var_dump($x);
echo "<br>";
$x = 2.4e3;
var_dump($x);
echo "<br>";
$x = 8E-5;
var_dump($x);
?>
- 运行结果如下
Boolean(布尔型)
- 布尔型通常用于条件判断,可以是 TRUE 或 FALSE。
$x=true;
$y=false;
Array(数组)
- 数组可以在一个变量中存储多个值。
$ways=array("吃饭","工作","睡觉");
Object(对象)
- 对象数据类型也可以用于存储数据。
- 对象必须声明:首先,必须使用class关键字声明类对象。类是可以包含属性和方法的结构。然后在类中定义数据类型,然后在实例化的类中使用数据类型。
<!DOCTYPE html>
<html>
<body>
<?php
class Car
{
var $color;
function __construct($color=" ") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
function print_vars($obj) {
foreach (get_object_vars($obj) as $prop => $val) {
echo "\t$prop = $val\n";
}
}
// 实例一个对象
$herbie = new Car("white");
// 显示 herbie 属性
echo "\therbie: Properties\n";
print_vars($herbie);
?>
</body>
</html>
- 注:关键字this就是指向当前对象实例的指针,不指向任何其他对象或类。
- 运行结果如下
NULL(空值)
- NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
- NULL 值指明一个变量是否为空值。可用于数据空值和NULL值的区别。
- 通过设置变量值为 NULL 来清空变量数据:
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>
- 运行结果如下
PHP 类型比较
- 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
- 严格比较:用三个等号 === 比较,除了比较值,也比较类型。
<?php
if(222 == "222") {
echo '1、值相等';
}
echo PHP_EOL; // 换行符
if(222 === "222") {
echo '2、类型相等';
} else {
echo '3、不相等';
}
?>
- 返回结果如下
1、值相等
3、不相等
0、false、null比较
<?php
echo '0 == false: ';
var_dump(0 == false);
echo '0 === false: ';
var_dump(0 === false);
echo PHP_EOL;
echo '0 == null: ';
var_dump(0 == null);
echo '0 === null: ';
var_dump(0 === null);
echo PHP_EOL;
echo 'false == null: ';
var_dump(false == null);
echo 'false === null: ';
var_dump(false === null);
echo PHP_EOL;
echo '"0" == false: ';
var_dump("0" == false);
echo '"0" === false: ';
var_dump("0" === false);
echo PHP_EOL;
echo '"0" == null: ';
var_dump("0" == null);
echo '"0" === null: ';
var_dump("0" === null);
echo PHP_EOL;
echo '"" == false: ';
var_dump("" == false);
echo '"" === false: ';
var_dump("" === false);
echo PHP_EOL;
echo '"" == null: ';
var_dump("" == null);
echo '"" === null: ';
var_dump("" === null);
?>
- 运行结果如下
0 == false: bool(true)
0 === false: bool(false)
0 == null: bool(true)
0 === null: bool(false)
false == null: bool(true)
false === null: bool(false)
"0" == false: bool(true)
"0" === false: bool(false)
"0" == null: bool(false)
"0" === null: bool(false)
"" == false: bool(true)
"" === false: bool(false)
"" == null: bool(true)
"" === null: bool(false)
- 可以发现0、false、null值都是相同的,类型不同。