String, Integer, Float, Boolean, Array, Object, NULL
PHP 字符串
一个字符串是一串字符的序列,就像 "Hello world!"。
PHP 整型
整数规则:
- 整数必须至少有一个数字 (0-9)
- 整数不能包含逗号或空格
- 整数是没有小数点的
- 整数可以是正数或负数
- 整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。
PHP var_dump() 函数返回变量的数据类型和值。
var_dump($x);
PHP 浮点型
浮点数是带小数部分的数字,或是指数形式。
PHP 布尔型
布尔型可以是 true 或 false。
PHP 数组
数组可以在一个变量中存储多个值。
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
/*
array(3) { [0]=> string(5) "Volvo" [1]=> string(3) "BMW" [2]=> string(6) "Toyota" }
*/
PHP 对象
- 对象数据类型也可以用于存储数据。在 PHP 中,对象必须声明。
- 首先,你必须使用class关键字声明类对象。类是可以包含属性和方法的结构。
- 然后我们在类中定义数据类型,然后在实例化的类中使用数据类型.
class Car{
var $color;
function __construct($color="green") {
$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);
PHP NULL 值
- NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
- NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。
- 可以通过设置变量值为 NULL 来清空变量数据.
常量值被定义后,在脚本的其他任何地方都不能被改变。
PHP 常量
- 常量是一个简单值的标识符。该值在脚本中不能改变。
- 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
- 注意: 常量在整个脚本中都可以使用。
设置 PHP 常量
设置常量,使用 define() 函数,函数语法如下:
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
该函数有三个参数:
- name:必选参数,常量名称,即标志符。
- value:必选参数,常量的值。
- case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的。
// 区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com");
echo GREETING; // 输出 "欢迎访问 Runoob.com"
echo '<br>';
echo greeting; // 输出 "greeting"
// 不区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com", true);
echo greeting; // 输出 "欢迎访问 Runoob.com"
常量是全局的
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。
PHP 中的字符串变量
字符串变量用于包含有字符的值。
在创建字符串之后,我们就可以对它进行操作了。您可以直接在函数中使用字符串,或者把它存储在变量中。
PHP 并置运算符
在 PHP 中,只有一个字符串运算符。
并置运算符 (.) 用于把两个字符串值连接起来。
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
PHP strlen() 函数
有时知道字符串值的长度是很有用的。strlen() 函数返回字符串的长度(字符数)。
PHP strpos() 函数
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
echo strpos("Hello world!","world");
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 10 % 8 10 % 2 | 1 2 0 |
- x | 取反 | x 取反 | -2 | -2 |
a . b | 并置 | 连接两个字符串 | "Hi" . "Ha" | HiHa |
PHP7+ 版本新增整除运算符 intdiv()
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 数组运算符
运算符 | 名称 | 描述 |
---|---|---|
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 |
$x = array("a" => "red", "b" => "green");
三元运算符
另一个条件运算符是"?:"(或三元)运算符 。
语法格式
(expr1) ? (expr2) : (expr3)
对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
自 PHP 5.3 起,可省略中间部分。expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
$test = '菜鸟教程';
// 普通写法
$username = isset($test) ? $test : 'nobody';
echo $username, PHP_EOL;
// PHP 5.3+ 版本写法
$username = $test ?: 'nobody';
echo $username, PHP_EOL;
注意:PHP_EOL 是一个换行符,兼容更大平台。
在 PHP7+ 版本多了一个 NULL 合并运算符 ??
// 如果 $_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。
运算符优先级
下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
说明:左 = 从左到右,右 = 从右到左。
结合方向 | 运算符 | 附加信息 |
---|---|---|
无 | clone new | clone 和 new |
左 | [ | array() |
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 |
无 | instanceof | 类型 |
右 | ! | 逻辑运算符 |
左 | * / % | 算术运算符 |
左 | + – . | 算术运算符和字符串运算符 |
左 | << >> | 位运算符 |
无 | == != === !== <> | 比较运算符 |
左 | & | 位运算符和引用 |
左 | ^ | 位运算符 |
左 | | | 位运算符 |
左 | && | 逻辑运算符 |
左 | || | 逻辑运算符 |
左 | ? : | 三元运算符 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 |
左 | and | 逻辑运算符 |
左 | xor | 逻辑运算符 |
左 | or | 逻辑运算符 |
左 | , | 多处用到 |
运算符优先级中,or 和 ||,&& 和 and 都是逻辑运算符,效果一样,但是其优先级却不一样。
// 优先级: || > = > or
$a = 3;
$b = false;
$c = $a or $b;
var_dump($c); // 这里的 $c 为 int 值3,而不是 boolean 值 true
$d = $a || $b;
var_dump($d); //这里的 $d 就是 boolean 值 true
括号的使用
我们通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。
一个等号 = 用于赋值,如:
$a = 5;
两个等号 == 用于比较,值相等,类型不一定相等,如:
5==5 // 返回 true 5=="5" // 返回 true
三个等号 === 用于绝对比较,即类型与值都要相等,如:
5===5 // 返回 true 5==="5" // 返回 false
$c = &$a;
c 是 a 的引用,也就是说 c 和 a 是同一个变量了。
& 是引用的意思,php 没有指针的概念。