PHP变量与函数全面解析
立即解锁
发布时间: 2025-09-12 01:59:35 阅读量: 368 订阅数: 27 AIGC 

### PHP变量与函数全面解析
#### 1. PHP变量概述
PHP中的变量与shell变量类似,但PHP变量可以存储不同类型的值。引用变量时,无论读取还是设置值,都要在变量名前使用美元符号($)。PHP变量的类型主要有以下几种:
- 字符串(Strings)
- 整数(Integers)
- 浮点数(Floats)
- 数组(Arrays)
- 对象(Objects)
- 空值(Nulls)
下面我们详细探讨这些变量类型。
#### 2. 字符串变量
字符串是由引号括起来的一系列字符。可以使用单引号(')或双引号(")来定义字符串,但必须使用相同类型的引号开始和结束字符串,并且如果要在字符串中包含引号,需要用反斜杠进行转义。例如:
```php
$a = '1 string';
$a = 'PHP ';
```
使用点号(.)可以轻松实现字符串的拼接,这也被称为字符串连接:
```php
echo "hello" . " " . "world";
```
输出结果为:
```
hello world
```
还有一种字符串拼接的简写方法,使用 .= 符号。例如:
```php
$a = 'hello';
$a .= ' world';
```
需要注意的是,双引号字符串比单引号字符串功能更强大,在双引号字符串中可以引用变量,就像在shell编程中那样。
#### 3. 整数变量
整数类型(通常称为int)可以存储任意正负数。例如:
```php
$a = -5;
```
不过,整数的存储大小是有限制的。在PHP中,有一些常量用于定义这些限制,对于整数,有 PHP_INT_MIN 和 PHP_INT_MAX 来定义其范围。示例代码如下:
```php
echo "The smallest int is " . PHP_INT_MIN . PHP_EOL;
echo "The largest int is " . PHP_INT_MAX . PHP_EOL;
```
运行结果可能如下:
```
The smallest int is -9223372036854775808
The largest int is 9223372036854775807
```
可以对整数变量进行基本的数学运算,结果通常为整数,除非答案不是整数,此时结果将为浮点数。例如:
```php
$a = (10 + 4) / 2;
echo $a; // 输出为 7
```
##### 3.1 整数的二进制表示
PHP内部以二进制形式存储整数,二进制是计算机处理和存储数字的原生方式。例如,一个8位数字可以存储0到255之间的数字,共256个不同的数字。不同位数能存储的数字数量如下表所示:
|位数|可存储状态数|
|----|----|
|8 - Bit|256|
|7 - Bit|128|
|6 - Bit|64|
|5 - Bit|32|
|4 - Bit|16|
|3 - Bit|8|
|2 - Bit|4|
|1 - Bit|2|
一个n位二进制数能存储的最大状态数为 2 的 n 次方(2 ^ n),由于数字从0开始计数,所以能存储的最大数字为 (2 ^ n) - 1。以64位数字为例:
```
(2 ^ 64) - 1 = 18446744073709551615
```
在macOS Catalina的计算器应用中,将视图切换到“Programmer”,输入该值或在计算器显示0时按“1’s”补码,就能看到这个结果。但这个值比PHP能存储的最大整数 9223372036854775807 要大,这是因为PHP存储的整数有正负之分,最高位用于存储整数的正负号。
计算二进制值的简单方法是列出每个二进制位代表的数字,当该位为1时,将其加到总数中;为0时则跳过。例如,数字200的二进制表示如下:
|128|64|32|16|8|4|2|1|
|----|----|----|----|----|----|----|----|
|1|1|0|0|1|0|0|0|
在PHP中,可以使用 printf 函数输出整数的二进制表示:
```php
<?php
$value = 200;
printf("%d in binary is %b\n", $value, $value);
// 输出:200 in binary is 11001000
```
#### 4. 浮点数
浮点数(通常称为float,有时也称为double)与整数类似,但包含小数部分。例如:
```php
$a = 0.1;
```
浮点数有两个常量 PHP_FLOAT_MIN 和 PHP_FLOAT_MAX 来定义其范围。示例代码如下:
```php
echo "The smallest positive float is " . PHP_FLOAT_MIN . PHP_EOL;
echo "The largest float is " . PHP_FLOAT_MAX . PHP_EOL;
```
运行结果可能如下:
```
The smallest positive float is 2.2250738585072E-308
The largest float is 1.7976931348623E+308
```
PHP_FLOAT_MAX 的值可以通过乘以 10 的相应次方从科学计数法转换过来,实际上就是将小数点向右移动308位,这意味着浮点数可以存储非常大的数字。与整数一样,也可以对浮点数进行基本的数学运算,但结果始终为浮点数,即使答案看起来应该是整数。例如:
```php
var_dump(0.5 + 0.5);
// 输出:float(1)
```
##### 4.1 浮点数的二进制表示
虽然我们可能认为计算机在存储浮点数时是完美的,但实际上并非总是如此。浮点数被分为整数部分和小数部分,在PHP中,这种划分由精度决定,目前精度设置为14位,该值由 php.ini 文件控制。
```
% php --info | grep precision
precision => 14 => 14
```
一个64位浮点数使用48位存储整数部分,16位存储小数部分。当PHP存储小数部分时,二进制表示的是1的分数,如下表所示:
|位数|1 - Bit|2 - Bit|3 - Bit|4 - Bit|5 - Bit|6 - Bit|7 - Bit|8 - Bit|
|----|----|----|----|----|----|----|----|----|
|分数|1/2|1/4|1/8|1/16|1/32|1/64|1/128|1/256|
|值|0.5|0.25|0.125|0.0625|0.03125|0.015625|0.0078125|0.00390625|
PHP很容易存储像0.25和0.5这样的小数,它们的二进制表示分别为 01000000 和 10000000。像0.03125这样的数字也比较容易存储,需要5位二进制数 00100000。但像0.1和0.2这样的数字则很难准确存储。以下代码用于计算正浮点数的二进制表示:
```php
<?php
$num = 0.1;
$int = intval($num);
$fraction = $num - $int;
$binary = '';
$position = 1;
for ($i = 0; $i < 8; $i++) {
$fraction *= 2;
if ($fraction >= 1) {
$fraction -= 1;
$binary .= '1';
} else {
$binary .= '0';
}
}
printf("%f in binary is %08b.%s\n", $num, $int, $binary);
```
运行上述代码,输出的二进制为 00011001,对应的十进制值为 0.097656125,并非 0.1。将位数从8位增加到16位,二进制为 0001100110011001,对应的十进制值为 0.0999908447265625。无论使用多少位,有些小数都无法准确存储,在比较浮点数时需要注意这一点。
#### 5. 整数和浮点数的简写运算符
PHP允许使用简写形式进行算术运算。例如,通常改变变量 $b 的值需要这样写:
```php
$b = 10;
$b = $b / 5;
```
可以使用的数学运算符如下表所示:
|符号|运算|
|----|----|
|+|加法|
|-|减法|
|*|乘法|
|/|除法|
|%|取模|
|**|幂运算|
使用简写运算符可以去掉额外的 $b 变量,例如:
```php
$b /= 5;
```
简写运算符如下表所示:
|符号|简写|运算|
|----|----|----|
|+|+=|加法|
|-|-=|减法|
|*|*=|乘法|
|/|/=|除法|
|%|%=|取模|
#### 6. 数组变量
数组是元素的集合,每个元素可以是任意类型的变量,甚至可以是另一个数组。数组主要分为两种类型:数字数组和关联数组,它们的区别在于访问数组中元素的方式不同。
##### 6.1 数字数组
数字数组使用整数作为索引,除非特别指定,否则索引从0开
0
0
复制全文
相关推荐









