本文整理 PHP 基础学习笔记。涉及旧版行为的内容保留历史说明,运行时应按实际 PHP 版本核对。
基本语法
1.php标记
php代码标记以<?php ?>格式给出,可以写在同一行,问号和php之间不能有空格
<?php ?>
<?php
?>
除此之外还有一个特殊的格式**<?=**这个格式等价于 <?php echo
<?='hello,world';
三种标记格式都可以没有?>结尾,当没有?>的时候,即使只有一行代码也要加分号,并且接下来的所有文本都会被当做php代码解析,所以不能再其中加入html等其他语言的内容。
<?php
echo 'hello,world';# 分号不能省略
还有一种 <? 短标记格式,其可用性取决于 short_open_tag 配置;<?= 短 echo 标记不依赖该配置。当开启的时候,可以使用如下的格式
<? ?>
# 同样可以把/?/>省略,例如:
<? echo
以上的特殊格式的php标记<?=会将第一行代码的结果或者文本内容输出,遇到分号为止。之后的代码仍然是当做php代码执行,但是不会主动输出。
凡是在一对开始和结束标记之外的内容都会被 PHP 解析器作为普通文本输出,这使得 PHP 文件可以具备混合内容。 可以使 PHP 嵌入到 HTML 文档中去,但是php代码只能运行在.php文件中,不能运行在html,css,js文件中,但是php文件中可以包含html,css,js代码
<!DOCTYPE html>
<html>
<head></head>
<body>
<?php echo 'hello';
?>
</body>
</html>
<!--写法正确,php代码可以穿插在html文本中-->
2.注释语句
PHP 支持 C,C++ 和 Unix Shell 风格(Perl 风格)的注释
<?php
echo 'This is a test'; // 这是单行 c++ 样式注释
/* 这是一条多行注释
另一行也是注释 */
echo 'This is yet another test';
echo 'One Final Test'; # 这是单行 shell 风格的注释
?>
数据类型
1.简介
PHP 是动态类型语言,这意味着默认不需要指定变量的类型,因为会在运行时确定。PHP中包含了八大数据类型。
标量类型:整型int,浮点型float,字符型string,布尔型bool,
数组型array,
空值null,
类object,
资源类型resource。
对于变量所属的数据类型的判断,可以使用var_dump()函数和get_debug_type()函数来将变量的类型和值输出。也可以使用is_type表达式来判断是否是该类型的值。
| 函数名 | 作用 | 说明 |
|---|---|---|
| var_dump() | 显示变量的类型、值以及对象的属性和类名等信息。 | 一般用于调试阶段 |
| get_debug_type() | 只返回变量的类型。 | PHP8.0.0之后才能使用 |
| is_type() //type可以为八个数据类型的任意一个。如is_string() | 判断是否为该类型,返回bool值 | |
| gettype() | 返回变量的类型 | 与 get_debug_type() 的类型命名细节不同;旧版本也可使用 |
2.NULL
int可以用八进制,十进制和十六进制表示
float可以用科学计数法表示
string可以用双引号””和单引号”,但是在双引号中可以使用变量,也可以使用转义字符,会将其转化为对应的值,但是单引号会当做普通字符串处理。
将变量赋值为null可以清空变量
数组可以用array()和[]来初始化;
使用var_dump()可以输出变量的类型和值,也可以使用echo gettype($a);
$a = -15;
$b = 1.25E-5;
$c = true;
$d = array("hello","scis");
$e = null;
3.输出语句
输出语句有两种,echo和print。两者都有两种语法格式。
不同:echo效率高,开支小,可以同时输出多个字符串,用逗号隔开
print只能输出一个字符串,有固定返回值1
echo 'string1','string2'...;
print 'string';
echo('string');
print('string');
4.变量
php中的变量声明为:$变量名,php为弱类型的语言,变量不需要指定类型,会自动分配。
命名规则:数字加大小写加$和_,只能以字母和下划线开头,区分大小写。驼峰命名,下划线命名
5.命令行运行
php代码可以在cmd中直接运行,使用php 文件.php运行,或者使用vscode运行。
读取控制台的输入可以使用readline(“hint”);或者fgets(STDIN);
<?php
$in = readline("请输入内容");
echo $in;
//fgets
echo "hint2";
$a = fgets(STDIN);
echo $a;
?>
5.常量
定义方式
1.define(key,value);
2.const key = value;
define('name','zhangsan');
const sex = '男';
const不能在条件中使用,常量名可以用变量拼接,访问的时候可以使用constant(a.b)来访问。
if(isset($name))
{
define('xiaoji'.$name,'lisi');
}
echo constant('xiaoji'.$name);
使用get_defined_constants()可以获取所有的常量值,参数加true可以实现对常量的分组,获得的数组中,’user’键名对应的键值数组为用户创建的常量。
$value = get_defined_constants(true);
var_dump($value['user']);
八个魔术常量
__FILE__//获取当前文件的绝对路径
__LINE__//获取当前代码所在行号
__DIR__//获取当前文件所在目录的绝对路径
__FUNCTION__//获取调用该常量的方法名
__CLASS__//获取调用该常量所在的类型
__NAMESPACE__//获取调用该常量的命名空间
__METHOD__//获取调用该常量所在的位置信息,格式为namespace/class::method
__TRAIT__
6.定界符EOF
在php中可能会遇到复制大段代码或者文本的情况,文本中有双引号,单引号等,如果一个个转义会显得非常麻烦,这时候可以使用定界符EOF,定界符会将内部的文本格式和数据原封不动的储存下来,但是可以解析变量和转移字符。
$b = 123;
echo <<<EOF
在这里是定界符内部,所有文本包括“和‘都可以不用考虑配对和转义,在'这里,也可以使用\n和$b,都会被解析'
EOF;
语法格式: <<<EOF
EOF;
其中PHP 7.3 之前,结束标识符必须顶格;较新版本允许缩进,但应与正文缩进规则一致,EOF可以换成任意相同的字符,只需要保证一致,并且不会在内容中顶格出现,
定界符包裹的内容可以用变量存储起来,如
$a = <<<EOF
使用了变量存储。\n
EOF;
echo $a;
在定界符中使用的html标签也会被保留下来,输出到浏览器上时会对其进行渲染,成为正常的html页面。
运算符
1.算术运算符
+,-,*,/,%,-(取相反数),~(取反运算)a.b(并置运算,连接两个字符串)
2.赋值运算符
=,+=, -=, *=, /= ,%=, .=
3.自增自减运算符
++前置,后置++,–前置,后置–
4.比较运算符
==,弱相等,只比较值,以下是 PHP 7 及更早版本中数值与字符串比较的历史规则:
以数字开头,则为直到第一个非数字为止。如 45sfaf45 ->45
以非数字开头,则转为0,
===,绝对相等,比较值和类型必须完全相同。
!=,!==
<,>,<=,>=
5.逻辑运算符
and,or,xor,&&,||,!
and和&&作用相同,or和||作用相同,都具有短路效果,但是&&和||的优先级更高。
6.其他运算符
三目运算符 条件?值1:值2(条件为真返回值1,为假返回值2)
空合并运算符 条件??值1(条件是否未定义或为空,是则返回值1,否则返回条件值)//php7之后支持
组合比较符 $a<=>$b (用于比较整型,浮点数,和字符串。若$a < $b,返回-1,若$a == $b,返回0,若$a > $b,返回1)//php7之后支持
分支结构
1.判断
if()
{
}
switch()
{
case 1:
break;
case 2:
break;
default:
break;
}
2.循环
for( ; ; )
{
}
while( )
{
}
do
{
}while( );
//break 表示跳出当前循环,break 2;跳出两层循环; break 3...
评论发表评论 +
评论