初学PHP
一、php基本概念
1.PHP 是什么?
- PHP(”PHP: HypertextPreprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 web 开发。
2.PHP 能做什么?
- PHP 能做任何事。PHP 主要是用于服务端的脚本程序,因此可以用 PHP 来完成任何其它的 CGI 程序能够完成的工作,例如收集表单数据,生成动态网页,或者发送/接收 Cookies。但 PHP 的功能远不局限于此。
二、PHP环境配置:windows 环境配置(强烈推荐phpStudy)
1. 进入官网下载,www.xp.cn;
2.安装时可以自定义安装路径,安装完成后如下图:
3.选择自己需求的php、apache、mysql版本下载并启动
4.创建自己的网站站点,默认基本配置,填写自己喜欢的域名就行
5.创建完成后,点击管理,打开网站
6.网站创建成功后,php环境就配置完成了
三、php环境配置:虚拟机Linux 环境配置(强烈推荐小皮面板)
1.下载虚拟机VMware,并自定义安装路径
- 浏览器搜索VMware下载
2.安装很简单默认安装,自己选好安装路径
- 安装好如图:
3.然后下载Linux系统,我们这里下载CentOS7标准版,下载地址:点击下载
4.下载完成后,打开VMware虚拟机,新建虚拟机
- 默认典型安装->下一步
- 选择安装程序光盘映像文件,找到刚才下载的CentOS7,单机下一步
- 自定义虚拟机名称,默认也可以,自定义虚拟机安装路径
- 指定磁盘容量,默认就好,单击下一步
- 设置需要的硬件配置,单机完成,默认也可以影响并不大,一般都是去掉声卡和打印机
- 单机完成后CentOS7系统就开始安装了
- 设置时区为上海并调整时间
- 单机软件选择
- 配置好以后,点击开始安装
- 设置root密码和用户名
- 然后等待安装完成后重启即可
- 右键打开终端,输入ifconfig,获取当前ip地址
- 虚拟机安装完成了,接下来在本机安装Xsheel,用来连接虚拟机
5.XSheel安装
- 下载地址(个人家庭版免费使用):点击下载
- 解压并安装,自定义安装路径
- 新建会话
输入Linux系统设置的用户名,密码
下载小皮面板,输入:(yum install -y wget && wget -O install.sh https://download.xp.cn/install.sh && sh install.sh) 回车
等待安装完成后如图:
- 我们使用内网来访问下,复制内网地址,在浏览器中打开,并输入小皮面板的默认用户名和密码登录
- 登录后下载需要的php版本和mysql版本
- 启动 apache ,创建网站站点
- 用域名访问站点
- 访问成功,虚拟机 Lunix 环境搭建完成
四、php基本语法
1. 开始标签,结束标签
<?php 和 ?>
如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图。
<?php
//开始标签
//php程序由哪几部分组成
//代码
function sum(int $a,int $b){
//返回结果给调用者
return "{$a} + {$b} =" .($a+$b);
}
//将执行结果打印输出
echo sum(11,20);//echo 效率最高,没有返回值
//结束标签
?>
<?
//php打印输出
$email = 'admin@php.cn';
//echo 回显,效率最高,没有返回值
echo $email,'<br>';
echo '<span style="color:red">'.$email.'</span>';
echo '<hr>';
//print与echo区别
//1.echo可以打印多个变量,且没有返回值
//2.print 仅能打印单个变量,返回1
print $email;
echo '<hr>';
echo gettype($email);
echo '<hr>';
//想要获得变量的完整的信息
var_dump($email);
echo '<hr>';
//var_export();返回原代码
var_export($email);
2. html代码中嵌套php代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<p>123</p>
<?php echo '嵌套php'; ?>
<p>456</p>
</body>
</html>
注意: 后缀要把html改成php,因为html不能解析php的内容,除非使用模板引擎,比如:TP(ThinkPHP)
3.指令分隔符“ ; ”
- PHP 需要在每个语句后用分号结束指令,一段 PHP 代码中的结束标记隐含表示了一个分号;在一个 PHP 代码段中的最后一行可以不用分号结束。如果后面还有新行,则代码段的结束标记包含了行结束。
<?php
header("content-type:text/html;charset=utf-8");
echo "第一行<br>";
?>
<?php echo "第二行<br>" ?>
<?php echo '最后一行';
4.注释
- 单行注释: // ,# ;多行注释: /**/;
<?php
header("content-type:text/html;charset=utf-8");//设置utf-8,解决乱码问题
//echo "注释<br>";
#echo "注释<br>";
/*echo "注释<br>";
echo "注释<br>";
echo "注释<br>";
echo "注释<br>";*/
五、php类型
1.四种标量类型:boolean,integer,float,string
Boolean 布尔类型,boolean 表达了真值,可以为 TRUE 或 FALSE,两个都不区分大小写。
当转换为 boolean 时,以下值被认为是 FALSE:
布尔值 FALSE 本身
整型值 0(零)
浮点型值 0.0(零)
空字符串,以及字符串 “0”
不包括任何元素的数组
特殊类型 NULL(包括尚未赋值的变量)
从空标记生成的 SimpleXML 对象所有其它值都被认为是 TRUE(包括任何资源 和 NAN)
整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。
Float 浮点型 :小数
String 字符串 ,一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode .
一个字符串可以有四种表达方式
单引号,要表达一个单引号自身,需在它的前面加个反斜线(\)来转义。
双引号,如果字符串是包围在双引号(”)中, PHP 将对一些特殊的字符进行解析。
Heredoc 结构,Heredoc 结构就象是没有使用双引号的双引号字符串,这就是说在 heredoc 结构中单引号不用被转义,但是上文中列出的转义序列还可以使用。变量将被替换。
Nowdoc 结构,Nowdoc 结构是类似于单引号字符串的。Nowdoc 结构很象 heredoc 结构,但是 nowdoc 中不进行解析操作。这种结构很适合用于嵌入 PHP 代码或其它大段文本而无需对其中的特殊字符进行转义。
2.两种复合类型,数组、对象
可以用 array() 语言结构来新建一个数组,它接受任意数量用逗号分隔的 键(key) => 值(value)对。
key 可以是 integer 或者 string。value 可以是任意类型
此外 key 会有如下的强制转换:
包含有合法整型值的字符串会被转换为整型。例如键名 “8” 实际会被储存为 8。但是 “08” 则不会强制转换。
浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。
布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
Null 会被转换为空字符串,即键名 null 实际会被储存为 “”。
数组和对象不能被用为键名。
要创建一个新的对象 object,使用 new 语句实例化一个类。
3.两种特殊类型,Resource 资源类型 、NULL
资源 resource 是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。
特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL。
<?php
//1.基本类型
//字符串
$name = '手机';
//数值
$price = 2980;
//布尔
$is5G = false;
//2.复合类型,对象,数组
$obj = new stdClass;
//对象是属性和方法的无序集合
$obj->name='peter zhu';
echo $obj->name,'<hr>';
//数组
$arr = ['电脑',5000,'华为'];
//ptint_r()以人性化的方式打印变量
//true不直接打印,而返回
//返回就是一定要有一个接收者
$str = print_r($arr,true);
echo '<pre>'.$str.'</pre>';
//基本类型:标量,单值
//复合类型:多值
//3.特殊类型
//null
$name = null;
var_dump($name);
//$f就是文件资源类型
$f = fopen('demo2.php','r');
var_dump($f);
六、变量
1.基础
变量是临时存储数据的容器
变量是实现数据复用的手段
PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。
变量名与 PHP 中其它的标签一样遵循相同的规则。一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母,数字,或者下划线。
<?php
$username = 'admin';
$userName = 'peter';
//变量区分大小写
echo $username,'<br>',$userName,'<hr>';
//函数是不区分大小写
echo strtoupper($userName).'<hr>';
echo STRTOUPPER($userName).'<hr>';
//变量必须以"$"开始
//变量标识符不允许用数字开始
//变量允许使用下划线开始
$_email = 'abc@qq.com';
//变量名不允许使用特殊字符串,@
//$user@id = 'abc';
//变量标识符:$开始,仅允许字母,下划线和数字,且不允许使用数字开始
$我的邮箱 = 'peter@php.cn';
//中文可以用作变量名,但不推荐
echo $我的邮箱;
//无意义,不要用,变量名要望文生义
$aaa = 'php.cn';
$_ = 123;
<?php
//变量的动态:是指变量的类型随值而变化
$var = 100;
var_dump($var);
echo '<hr>';
$var = 'php';
var_dump($var);
$this 是一个特殊的变量,它不能被赋值。
变量默认总是传值赋值。那也就是说,当将一个表达式的值赋予一个变量时,整个原始表达式的值被赋值到目标变量。这意味着,例如,当一个变量的值赋予另外一个变量时,改变其中一个变量的值,将不会影响到另外一个变量。
- PHP 也提供了另外一种方式给变量赋值:引用赋值。这意味着新的变量简单的引用(换言之,”成为其别名” 或者 “指向”)了原始变量。改动新的变量将影响到原始变量,反之亦然。
<?php
//变量的值传递和引用传递两种方式赋值
//1.值传递,也是默认的方式
$price1 = 99;
$price2 = $price1;
//更新price2
$price2 = 199;
//查看price1
echo 'price1 = ' . $price1 . '<hr>';
//2.引用传递
$price1 = 99;
/* 在等号的右边/右值前面加上&(取地址符)
当前$price2中保存的并不是99,而是$price1变量在内存中的地址,[0xabcd1234] = 99*/
$price2 = &$price1;
//更新price2
$price2 = 199;
echo 'price1 = ' . $price1 . '<hr>';
2.可变变量
- 有时候使用可变变量名是很方便的。就是说,一个变量的变量名可以动态的设置和使用。一个普通的变量通过声明来设置,例如:
<?php
$a = 'hello';
?>
- 一个可变变量获取了一个普通变量的值作为这个可变变量的变量名。在上面的例子中 hello 使用了两个美元符号($)以后,就可以作为一个可变变量的变量了。例如:
<?php
$$a = 'world';
?>
- 这时,两个变量都被定义了:$a 的内容是”hello”并且 $hello 的内容是”world”。因此,以下语句:
<?php
$$a = 'world';
?>
- 与以下语句输出完全相同的结果:
<?php
echo "$a $hello";
?>
- 它们都会输出:hello world
3.检测变量
<?php
//变量的检测与删除
//打开所有的报错
error_reporting(E_ALL);
echo $username;
//变量检测
$username = '朱老师';
//isset();如果该变量存在且值不为null才是true
if (isset($username)) echo $username. '<br>';
else echo '没有定义该变量';
//unset();删除变量,没有返回值
/* unset($unsername);
echo $username; */
/* $var = '213';
if (isset($var)) echo $var . '<br>';
else echo '没有定义该变量'; */
$var = '';
if (empty($var)) var_dump($var);
4. 变量类型转换
<?php
//变量的类型转换
//自动转换:是由php系统偷偷进行的,不需要用户主动参与
$a = null;
$b = true;
$c = false;
$d = '5g';
$e = 'php';
$f = 15;
//null 在算术运算中自动转为0
echo $a + 10,'<br>';
//true 在算术运算中转为1
echo $b + 10,'<br>';
echo $d + 10,'<br>';
echo $e + 10,'<br>';
//.字符串连接
echo $d.$f,'<br>';
echo '<hr>';
//强制转换
//如果不想看到警告,通过强制转换解决
//echo (int)$e + 10, '<br>';
//临时转换
echo intval($e) + 20,'<br>';
echo strval($f) . 'hello';
//永久转换
settype ($f,'string');
echo '<br>';
echo gettype($f);
学习总结
windows和Linux下php环境的配置
PHP是主要是用于服务端的脚本程序
PHP的基本语法,以<?php开头,?>结束
PHP用//和#单行注释,/**/多行注释
PHP的类型分为4种标量类型,整型、布尔型、浮点型、字符串,标量可以理解为标准变量,一个变量只能存在一个值;两种复合类型,数组和对象,还有两种特殊类型,资源类型和NULL
打印变量,echo:没有返回值,print,返回值为1,var_dump():完整的打印数据类型,print_r():以人性化的方式打印
变量的类型转换,自动转换;临时强制转换:intval()强制转换成整型,strval()强制转换成字符串;永久转换:settype();gettype()查看变量类型
可变变量:以变量的值为变量名,使用两个$符号