PHP基础入门
一、编程基础
1、计算机如何表示信息?
计算机中的数据和代码都是通过二进制表示。(逢2进1)
2、计算机如何区分数据和代码?
任何需要执行的程序(代码), 都必须事先保存到计算机的内存中。
内存: 理解为宾馆的客房,客房有客人, 和房号, 客人就是数据, 房号就是地址编号(变量名)
计算机将信息进行分段存储, 分为二部分: 代码段, 数据段, 将数据和代码分别存入
在访问的时候, 由操作系统提供的保护机制, 防止越界访问(电脑蓝屏)
3、数据与代码在程序中如何体现?
程序中的数据和代码。
数据: 变量表示, 放在数据段
代码: 函数表示, 放在代码段
//数据: 变量表示, 放在数据段
$site = 'php.cn';
//代码: 函数表示, 放在代码段
function get_site($webSite)
{
return $webSite . '欢迎您';
}
// 调用函数, 指令就是一条一条的进入到cpu
echo get_site($site);
代码解析:
二、PHP基础
1、php运行原理
- PHP: 超文本预处理语言
- PHP: 是一种可以嵌入到HTML文档中的服务器端脚本语言
- PHP也是使用标签嵌入到HTML文档中,和css/js是一样的
<?php
: 起始标签?>
: 结束标签- html文档中一旦嵌入到php代码,那必须将扩展名由
.html
更新为.php
- 浏览器并不能直接解析HTML文档中的php代码
- 如果要解析html中的php代码,需要在web服务器中安装php解释器(php.exe)
2、echo 指令
echo
: 是php指令,不是函数,可以指定的内容,输出到默认的终端上显示,通常就是浏览器的窗口echo
: 输出的内容可以是纯文本, 纯文本中间是可以嵌入html代码,也可以打印一个或多个变量echo
: 无返回值- 与echo 功能类似的还是一个
print
,也是指令,不是函数,但有返回值 - print只支持一个参数
- echo , print 不是函数, 可以用圆括号, 也可不用
echo ('abc');
3、PHP语法
- php使用的是一对
<?php ... ?>
标签嵌入到html代码中 - php的结束标记
?>
, 是可以省略的, 但是并不是任何时候都可以省掉的 - 当只有php代码的时候, 推荐不要写结束标记
?>
当php与html混编的时候, 就不能省略,必须写上结束标记
纯php代码
<?php
echo 'php.cn';
- html 与 php 的混编
<body>
<p>Hello</p>
<?php
echo '<p>php.cn</p>';
?>
<h2>php中文网</h2>
重要提示:
- 无论是纯php还是和html混编, 只要存在php代码,文件扩展名就必须是
.php
- 只要是扩展名为
.php
的文件,就必须在服务器的环境下远行,本地访问无效
注释
- 注释的作用: 起到代码功能描述, 辅助阅读,方便维护
- 注释会被php解释器忽略掉, 并且不会出现在生成的html代码中
- 注释也有二种:
- 单行:
#
,//
- 单行或多行:
/* 一行或多行的注释文本 */
- 单行:
三、PHP变量
1、变量的作用
- 程序中总会有一些数据, 需要反复使用, 将它们临时保存到一个变量中
- 变量实现了数据的复用 (函数实现了代码的复用)
- 与其它语言不同之处, php变量使用前不要声明——php没有变量声明语句,直接赋值
- 所谓变量声明, 可以简单的理解为:向内存申请一块空间,用来存储数据, 变量名就是内存地址的编号
- 赋值:第一次要初始化, 第二次叫更新/修改
$a = 100;
标识符:命名规范:,只允许使用字母,数字和下划线,且不能以数字开头
PHP变量三要素
- php的变量名与普通的标识符是不一样, 必须要用
$
开头 - 必须满足php标识符的命名规范,
字符串, 数字或下划线组成,并且不能以数字开始
变量名严格区分大小写(PHP函数不区分大小写)
$username
,$userName
变量$9a
非法,不能以数字开始除了用户自定义变量, 系统为了方便用户, 还预定义一些变量
- 预定义变量通常可以反映程序的状态,例如服务器变量, 请求变量, 不受作用域限制
//预定义变量
echo '脚本名称: ' . $_SERVER['SCRIPT_NAME']. '<br>';
echo '浏览器: ' . $_SERVER['HTTP_USER_AGENT']. '<br>';
echo '服务器: ' . $_SERVER['SERVER_SOFTWARE']. '<br>';
echo 'GET请求参数: ' . $_GET['id'];
echo '<hr>';
$table;
if (is_null($table)) {
echo '$table 的值 null';
}
2、变量的类型:(任何一个变量一定是属于某种数据类型)
- php是弱类型语言, 变量的类型, 完成由它的值来确定
- 变量值的类型, 根据存储方式, 分为三类: 原始类型, 复合类型, 特殊类型
为什么变量数据有类型
(1、)操作的要求
- 只有先明确了数据的类型, 才能定允许的操作
- 例如, 数值允许进行算术运算, 字符串不能进行算术运算
100 + 30 = 130; //有意义
abc - qer //无意义
(2、)存储的要求
- 只有先明确了数据类型, 才能正确的分配内存空间来保存它
- 很明显, 数值,字符中, 布尔值,它们占用的空间肯定不一样的
基本类型
- 数值:
100, 3.14, -9.8
- 字符串:
'admin', "php.cn"
, 需要用单引号或双引号做为定界符进行封装。单引号不解析变量;双绰号解析变量
<?php
//双引号字符串中的变量
$name = '朱老师';
//单引号字符串中的变量不会被解析
echo '我是:$name'. '<br>';
//双引号字符串中的变量会被解析
echo "我是:$name". '<br>';
//{}定界符
echo "我是:${name}abc". '<br>';
//双引号中特殊字符会被解析
/*\t-制表符,四个空格
\" \" 转义
*/
echo "This\t 'is' a\t \"demo\"";
//大段字符串的输出,<<<Heredoc Heredoc; 功能相当于双引号,用于代码中有大量双引号时
//"<a href=\"www.php.cn\" id=\"abc\">xxxx</a>"
echo <<<DEREDOC
<h3 style="color: red">"PHP\t中文网"{$name}</h3>
HEREDOC;
echo <<< "HELLO"
<h3 style="color: green">"PHP\t中文网"{$name}</h3>
HELLO;
echo '<hr>';
// nowdoc: 功能与单引号创建的字符串类似
echo <<< 'NOWDOC'
<h3 style="color: green">"PHP\t中文网"{$name} 'php真香'</h3>
NOWDOC;
- 布尔型: 只有真,假二个值
true | false
,通常用在逻辑判断中
取值范围:
每种数据类型的取值范围不一样
存储方式:
- 栈: 定长的存储单元, 整数4-8个字节, 字符串的入口地址放进去
- 堆: 不定长的存储单元, 数组, 对象,字符串本身
复合类型
类型说明:
- 一个变量名对应一个值: 单值类型/标量类型
$name = 'peter zhu'; $gender = 'male';
- 一个变量名与多个值对应: 多值类型/复合类型: 数组/对象
将变量输出的方式:
echo
:回显,无返回值print
:有返回值print_r
:var_export()
:可以生成变量的php源代码的字符串表示var_dump
:打印出变量详细信息,支持一次查询多个
<?php
$name = 'perter zhu';
$age = 30;
$isMarried = true;
//单值读取
//echo 回显,无返回值
echo '年龄:' .$age . '<br>';
echo $name .'年龄:' .$age . '<br>';
echo $name ,'年龄:' ,$age , '<br>';
echo '姓名:'.$name.'<br>';
//[]是数组
echo '姓名的第一个字母:' .$name[0].'<br>';
//推荐{}
echo '姓名的第一个字母:' .$name{0}.'<br>';
print('年龄:' .$age . '<br>');
//print 有返回值
echo print('年龄:' .$age . '<br>');
echo '<hr>';
// 第二个参数true, 不是输出, 而是返回return
echo print_r($name, true);
echo '<hr>';
// 复合数据, 数组
$data = range(1,20,2);
// 数组
$result = print_r($data, true);
// 字符串
//echo gettype($result);
//print_r($result);
echo '<pre>' . $result . '</pre>';
echo '<hr>';
echo $name . '<br>';
// var_export(): 可以生成变量的php源代码的字符串表示
var_export($name);
echo '<pre>' . var_export($data, true) . '</pre>';
//打印出变量详细信息,支持一次查询多个
var_dump($name, $age, $isMarried);
- 复合类型:可以理解来原始类型的PLUS版, 通常是由一个或多个原始类型的值组成
复合类型有二种类型: 数组和对象
数组
- 数组中的元素必须使用特殊的语法进行访问:变量名+键名,
$arr[2]
,$user['id']
- 如果键名是数值,称为:索引数组, 如果键名是连续的正整数, 可以省略键名
如果键名是字符串, 称为关联数组
对象
- 对象是由
new
指令,调用一个称为构造函数的一个特殊函数创建,或者实例化一个类来创建 - 对象的成员称之为属性或方法,使用变量名+成员指向符
$obj->table
, 或者$obj->getEmail()
特殊类型
- 所谓特殊,是指它的值比较特殊, 通常不会参与到运算中, 或者运算结果无意义
- 特殊类型有二种:
null
,resourece
资源类型 null
: 称为空类型, 当一个变量没有被初始化的时候,默认就是null
resourece
资源类型, 例如一个文件, 一张图片, 一个数据库的连接
类型转换
- 查询:
gettype($data)
- 设置:
settype($data, 'string')
, 这是永久性的 - 强制:
intval($data)
,strval($data)
, 这种转换是临时性,原始类型并不改变 - 判断:
is_int()
,is_string()
,is_array()
,is_object()
,is_null()
… - 自动: 当操作符二边的类型不一致的时候, 会触发自动转换机制