02-php基础知识
Posted gail-hu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02-php基础知识相关的知识,希望对你有一定的参考价值。
综述
学习网址 菜鸟教程-PHP
所有学习内容皆来自以上网站。
基础
语法
php 脚本以 <?php 开始,以 ?> 结束;
PHP 文件的默认文件扩展名是 ".php"。
<?php
echo "Hello World!";
?>
变量/常量
变量
PHP 变量规则:
- 变量以 $ 符号开始,后面跟着变量的名称
- 变量名必须以字母或者下划线字符开始
- 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
- 变量名不能包含空格
- 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
PHP 有四种不同的变量作用域:
- local
- global:global 关键字用于函数内访问全局变量。
- static:当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,请在您第一次声明变量时使用 static 关键字。然后,每次调用该函数时,该变量将会保留着函数前一次被调用时的值。
注释:该变量仍然是函数的局部变量。 - parameter
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问:
<?php
$x=5; // 全局变量
function myTest()
{
$y=10; // 局部变量
echo "<p>测试函数内变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
}
myTest();
echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
?>
global 关键字用于函数内访问全局变量。
在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:
<?php
$x=5;
$y=10;
function myTest()
{
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y; // 输出 15
?>
常量
常量定义:常量是一个简单值的标识符。常量值被定义后,在脚本的其他任何地方都不能被改变。
常量命名:一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
注意: 常量在整个脚本中都可以使用。
设置常量,使用 define() 函数,函数语法如下:
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
该函数有三个参数:
- name:必选参数,常量名称,即标志符。
- value:必选参数,常量的值。
- case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
以下实例我们创建一个 区分大小写的常量, 常量值为 "欢迎访问 https://www.cnblogs.com/gail-hu/p/12389475.html":
<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 https://www.cnblogs.com/gail-hu/p/12389475.html");
echo GREETING; // 输出 "欢迎访问 https://www.cnblogs.com/gail-hu/p/12389475.html"
echo '<br>';
echo greeting; // 输出 "greeting"
?>
以下实例我们创建一个 不区分大小写的常量, 常量值为 "欢迎访问 https://www.cnblogs.com/gail-hu/p/12389475.html":
<?php
// 不区分大小写的常量名
define("GREETING", "欢迎访问 https://www.cnblogs.com/gail-hu/p/12389475.html", true);
echo greeting; // 输出 "欢迎访问 https://www.cnblogs.com/gail-hu/p/12389475.html"
?>
常量是全局的
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。
以下实例演示了在函数内使用常量,即便常量定义在函数外也可以正常使用常量。
<?php
define("GREETING", "欢迎访问 https://www.cnblogs.com/gail-hu/p/12389475.html");
function myTest() {
echo GREETING;
}
myTest(); // 输出 "欢迎访问 https://www.cnblogs.com/gail-hu/p/12389475.html"
?>
数据类型
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。
PHP NULL 值
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。
可以通过设置变量值为 NULL 来清空变量数据:
字符串
函数名 | 函数说明 |
---|---|
addcslashes() | 返回在指定的字符前添加反斜杠的字符串。 |
addslashes() | 返回在预定义的字符前添加反斜杠的字符串。 |
bin2hex() | 把 ASCII 字符的字符串转换为十六进制值。 |
chop() | 移除字符串右侧的空白字符或其他字符。 |
chr() | 从指定 ASCII 值返回字符。 |
chunk_split() | 把字符串分割为一连串更小的部分。 |
convert_cyr_string() | 把字符串由一种 Cyrillic 字符集转换成另一种。 |
convert_uudecode() | 对 uuencode 编码的字符串进行解码。 |
convert_uuencode() | 使用 uuencode 算法对字符串进行编码。 |
count_chars() | 返回字符串所用字符的信息。 |
crc32() | 计算一个字符串的 32 位 CRC(循环冗余校验)。 |
crypt() | 单向的字符串加密法(hashing)。 |
echo() | 输出一个或多个字符串。 |
explode() | 把字符串打散为数组。 |
fprintf() | 把格式化的字符串写入到指定的输出流。 |
get_html_translation_table() | 返回 htmlspecialchars() 和 htmlentities() 使用的翻译表。 |
hebrev() | 把希伯来(Hebrew)文本转换为可见文本。 |
hebrevc() | 把希伯来(Hebrew)文本转换为可见文本,并把新行( )转换为 (br标签)。 |
hex2bin() | 把十六进制值的字符串转换为 ASCII 字符。 |
html_entity_decode() | 把 HTML 实体转换为字符。 |
htmlentities() | 把字符转换为 HTML 实体。 |
htmlspecialchars_decode() | 把一些预定义的 HTML 实体转换为字符。 |
htmlspecialchars() | 把一些预定义的字符转换为 HTML 实体。 |
implode() | 返回一个由数组元素组合成的字符串。 |
join() | implode() 的别名。 |
lcfirst() | 把字符串中的首字符转换为小写。 |
levenshtein() | 返回两个字符串之间的 Levenshtein 距离。 |
localeconv() | 返回本地数字及货币格式信息。 |
ltrim() | 移除字符串左侧的空白字符或其他字符。 |
md5() | 计算字符串的 MD5 散列。 |
md5_file() | 计算文件的 MD5 散列。 |
metaphone() | 计算字符串的 metaphone 键。 |
money_format() | 返回格式化为货币字符串的字符串。 |
nl_langinfo() | 返回指定的本地信息。 |
nl2br() | 在字符串中的每个新行之前插入 HTML 换行符。 |
number_format() | 通过千位分组来格式化数字。 |
ord() | 返回字符串中第一个字符的 ASCII 值。 |
parse_str() | 把查询字符串解析到变量中。 |
print() | 输出一个或多个字符串。 |
printf() | 输出格式化的字符串。 |
quoted_printable_decode() | 把 quoted-printable 字符串转换为 8 位字符串。 |
quoted_printable_encode() | 把 8 位字符串转换为 quoted-printable 字符串。 |
quotemeta() | 引用元字符。 |
rtrim() | 移除字符串右侧的空白字符或其他字符。 |
setlocale() | 设置地区信息(地域信息)。 |
sha1() | 计算字符串的 SHA-1 散列。 |
sha1_file() | 计算文件的 SHA-1 散列。 |
similar_text() | 计算两个字符串的相似度。 |
soundex() | 计算字符串的 soundex 键。 |
sprintf() | 把格式化的字符串写入一个变量中。 |
sscanf() | 根据指定的格式解析来自一个字符串的输入。 |
str_getcsv() | 把 CSV 字符串解析到数组中。 |
str_ireplace() | 替换字符串中的一些字符(大小写不敏感)。 |
str_pad() | 把字符串填充为新的长度。 |
str_repeat() | 把字符串重复指定的次数。 |
str_replace() | 替换字符串中的一些字符(大小写敏感)。 |
str_rot13() | 对字符串执行 ROT13 编码。 |
str_shuffle() | 随机地打乱字符串中的所有字符。 |
str_split() | 把字符串分割到数组中。 |
str_word_count() | 计算字符串中的单词数。 |
strcasecmp() | 比较两个字符串(大小写不敏感)。 |
strchr() | 查找字符串在另一字符串中的第一次出现。(strstr() 的别名。) |
strcmp() | 比较两个字符串(大小写敏感)。 |
strcoll() | 比较两个字符串(根据本地设置)。 |
strcspn() | 返回在找到任何指定的字符之前,在字符串查找的字符数。 |
strip_tags() | 剥去字符串中的 HTML 和 PHP 标签。 |
stripcslashes() | 删除由 addcslashes() 函数添加的反斜杠。 |
stripslashes() | 删除由 addslashes() 函数添加的反斜杠。 |
stripos() | 返回字符串在另一字符串中第一次出现的位置(大小写不敏感)。 |
stristr() | 查找字符串在另一字符串中第一次出现的位置(大小写不敏感)。 |
strlen() | 返回字符串的长度。 |
strnatcasecmp() | 使用一种"自然排序"算法来比较两个字符串(大小写不敏感)。 |
strnatcmp() | 使用一种"自然排序"算法来比较两个字符串(大小写敏感)。 |
strncasecmp() | 前 n 个字符的字符串比较(大小写不敏感)。 |
strncmp() | 前 n 个字符的字符串比较(大小写敏感)。 |
strpbrk() | 在字符串中搜索指定字符中的任意一个。 |
strpos() | 返回字符串在另一字符串中第一次出现的位置(大小写敏感)。 |
strrchr() | 查找字符串在另一个字符串中最后一次出现。 |
strrev() | 反转字符串。 |
strripos() | 查找字符串在另一字符串中最后一次出现的位置(大小写不敏感)。 |
strrpos() | 查找字符串在另一字符串中最后一次出现的位置(大小写敏感)。 |
strspn() | 返回在字符串中包含的特定字符的数目。 |
strstr() | 查找字符串在另一字符串中的第一次出现(大小写敏感)。 |
strtok() | 把字符串分割为更小的字符串。 |
strtolower() | 把字符串转换为小写字母。 |
strtoupper() | 把字符串转换为大写字母。 |
strtr() | 转换字符串中特定的字符。 |
substr() | 返回字符串的一部分。 |
mb_substr() | 返回中文字符串的一部分。 |
substr_compare() | 从指定的开始位置(二进制安全和选择性区分大小写)比较两个字符串。 |
substr_count() | 计算子串在字符串中出现的次数。 |
substr_replace() | 把字符串的一部分替换为另一个字符串。 |
trim() | 移除字符串两侧的空白字符和其他字符。 |
ucfirst() | 把字符串中的首字符转换为大写。 |
ucwords() | 把字符串中每个单词的首字符转换为大写。 |
vfprintf() | 把格式化的字符串写到指定的输出流。 |
vprintf() | 输出格式化的字符串。 |
vsprintf() | 把格式化字符串写入变量中。 |
wordwrap() | 按照指定长度对字符串进行折行处理。 |
运算符
PHP 算术运算符
运算符 | 名称 | 描述 | 实例 | 结果 |
---|---|---|---|---|
x + y | 加 | x和y的和 | 2 + 2 | 4 |
x - y | 减 | x和y的差 | 5 - 2 | 3 |
x * y | 乘 | x和y的积 | 5 * 2 | 10 |
x / y | 除 | x和y的商 | 15/5 | 3 |
x % y | 模 | x除以y的余数 | 5%2 | 3 |
-x | 取反 | 取反 | -3 | -3 |
PHP7+ 版本新增整除运算符 intdiv(),使用实例:
<?php
var_dump(intdiv(10, 3));
?>
以上实例会输出:
int(3)
PHP 赋值运算符
在 PHP 中,基本的赋值运算符是 "="。它意味着左操作数被设置为右侧表达式的值。也就是说,"$x = 5" 的值是 5。
运算符 | 等同于 | 描述 |
---|---|---|
x = y | x = y | 左操作数被设置为右侧表达式的值 |
x += y | x = x + y | 加 |
x -= y | x = x - y | 减 |
x *= y | x = x * y | 乘 |
x /= y | x = x / y | 除 |
x %= y | x = x % y | 模(除法的余数) |
a .= b | a = a . b | 连接两个字 |
PHP 递增/递减运算符
运算符 | 名称 | 描述 |
---|---|---|
++ x | 预递增 | x 加 1,然后返回 x |
x ++ | 后递增 | 返回 x,然后 x 加 1 |
-- x | 预递减 | x 减 1,然后返回 x |
x -- | 后递减 | 返回 x,然后 x 减 1 |
PHP 比较运算符
比较操作符可以让您比较两个值:
运算符 | 名称 | 描述 | 实例 |
---|---|---|---|
x == y | 等于 | 如果 x 等于 y,则返回 true | 5==8 返回 false |
x === y | 绝对等于 | 如果 x 等于 y,且它们类型相同,则返回 true | 5==="5" 返回 false |
x != y | 不等于 | 如果 x 不等于 y,则返回 true | 5!=8 返回 true |
x <> y | 不等于 | 如果 x 不等于 y,则返回 true | 5<>8 返回 true |
x !== y | 绝对不等于 | 如果 x 不等于 y,或它们类型不相同,则返回 true | 5!=="5" 返回 true |
x > y | 大于 | 如果 x 大于 y,则返回 true | 5>8 返回 false |
x < y | 小于 | 如果 x 小于 y,则返回 true | 5<8 返回 true |
x >= y | 大于等于 | 如果 x 大于或者等于 y,则返回 true | 5>=8 返回 false |
x <= y | 小于等于 | 如果 x 小于或者等于 y,则返回 true | 5<=8 返回 true |
PHP 逻辑运算符
逻辑运算符 | 名称 |
---|---|
and | 和 |
or | 或 |
xor | 异或 |
&& | 短路与 |
ll | 短路或 |
! | 非 |
PHP 数组运算符
运算符 | 名称 | 描述 |
---|---|---|
x + y | 集合 | x 和 y 的集合 |
x == y | 相等 | 如果 x 和 y 具有相同的键/值对,则返回 true |
x === y | 恒等 | 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true |
x != y | 不相等 | 如果 x 不等于 y,则返回 true |
x <> y | 不相等 | 如果 x 不等于 y,则返回 true |
x !== y | 不恒等 | 如果 x 不等于 y,则返回 true |
三元运算符
另一个条件运算符是"?:"(或三元)运算符 。
语法格式
(expr1) ? (expr2) : (expr3)
对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
<?php
$test = '菜鸟教程';
// 普通写法
$username = isset($test) ? $test : 'nobody';
echo $username, PHP_EOL;
// PHP 5.3+ 版本写法
$username = $test ?: 'nobody';
echo $username, PHP_EOL;
?>
注意:PHP_EOL 是一个换行符,兼容更大平台。
在 PHP7+ 版本多了一个 NULL 合并运算符 ??,实例如下:
<?php
// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值
$username = $_GET['user'] ?? 'nobody';
// 类似的三元运算符
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
?>
组合比较符(PHP7+)
PHP7+ 支持组合比较符(combined comparison operator)也称之为太空船操作符,符号为 <=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较。
语法格式如下:
$c = $a <=> $b;
解析如下:
如果 $a > $b, 则 $c 的值为 1。
如果 $a == $b, 则 $c 的值为 0。
如果 $a < $b, 则 $c 的值为 -1。
<?php
// 整型
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// 浮点型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
?>
运算符优先级
下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
说明:左 = 从左到右,右 = 从右到左。
结合方向 | 运算符 | 附加信息 |
---|---|---|
无 | clone new | clone 和 new |
左 | [ | array() |
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 |
无 | instanceof | 类型 |
右 | ! | 逻辑运算符 |
左 | * / % | 算术运算符 |
左 | + – . | 算术运算符和字符串运算符 |
左 | << >> | 位运算符 |
无 | == != === !== <> | 比较运算符 |
左 | & | 位运算符和引用 |
左 | ^ | 位运算符 |
左 | l | 位运算符 |
左 | && | 逻辑运算符 |
左 | ll | 逻辑运算符 |
左 | ? : | 三元运算符 |
右 | = += -= *= /= .= %= &= | = ^= <<= >>= => |
左 | and | 逻辑运算符 |
左 | xor | 逻辑运算符 |
左 | or | 逻辑运算符 |
左 | , | 多处用到 |
运算符优先级中,or 和 ||,&& 和 and 都是逻辑运算符,效果一样,但是其优先级却不一样。
括号的使用
我们通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。
以上是关于02-php基础知识的主要内容,如果未能解决你的问题,请参考以下文章
[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础