文章目录
PHP: "PHP: Hypertext Preprocessor",超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 web 开发.
1. 变量作用域
- local
- global
- static
1.1 Global
PHP有全局变量和局部变量之分。在函数外部定义的变量为全局变量,函数内部定义的变量为局部变量。
在PHP中,正常情况下,访问全局变量有两种方式:
- 利用GLOABLS数组(PHP默认将所有的全局变量存储在了GLOBALS数组中,可以通过GLOBALS[‘变量名’]访问)
- 利用global关键字
$x = 5; // 定义全局变量x
function global_test()
{
global $x; // 声明全局变量
echo '全局变量' . $x . "<br>";
echo '通过GLOBALS数组访问' . $GLOBALS['x'] . "<br>";
}
global_test();
1.2 static
PHP中,在函数内部定义的变量为局部变量。当函数调用结束后,会回收被调用函数内部的局部变量。
如果你希望函数调用完毕仍然保存该局部变量的时候,可以用static
修饰局部变量。
function static_test()
{
$y = 2; 三个static_test输出均为2
echo $y;
$y++;
}
static_test();
static_test();
static_test();
如上代码,当每次调用函数结束后,系统都会回收$y
的内存;因此三次输出的结果均为2。
function static_test()
{
static $y = 2;
echo $y;
$y++;
}
static_test();
static_test();
static_test();
static
修饰$y
;当函数调用结束后,不会回收其局部变量的内存;因此执行三次static_test()
的结果分别为2,3,4
2. PHP输出函数
- echo : 可以输出一个或多个字符。
- print:只允许输出一个字符,返回值总为1
- print_r : 打印关于变量的易于理解的信息,如是 string、integer 或 float,将打印变量值。如果给出的是 array,将会按照一定格式显示键和元素。
echo "url: <a href='https://www.baidu.com'> echo </a><br>";
print "url: <a href='https://www.jd.com'> print";
echo "<br>"; // 输出html标签的时候,需要使用引号将标签包裹
echo <br>; // html标签必须使用引号包裹,否则报错
echo "hello word";
echo hello; // 单个单词不用引号,浏览器也能解析
echo hello word; // 单词间有空格的时候,无法输出,会报错
3. PHP定界符
当PHP需要输出大量的HTML文本或者JS脚本的时候,定界符会有很好的效果。
定界符格式:
<<<EOF
EOF;
注意:
- 结束EOF必须单独占一行,且顶头写,不能有任何空白符,字符,注释与其在一行。
- 定界符字符串不一定必须要是EOF,其他相同的两个字符串当首和尾均可。
- 位于开始标记和结束标记之间的变量,html标签可以被正常解析,但是函数不行。
$title = 'PHP';
$a = <<<EOF
<h1>$title</h1>
<p>content</p>
EOF;
echo $a;
4. PHP数据类型
var_dump
函数:可以输出变量的类型和值。
4.1 字符串-string
可以理解为使用引号包裹的均为字符串类型。
$x = "hello";
echo $x;
var_dump($x); // string(5) "hello"
4.2 整型
- 没有小数的数字
- 可以为正数或者负数
- 可以是十进制,十六进制(0x),八进制(0);但是使用echo或var_dump输出的时候,十六进制和八进制都会被转换为十进制输出
$int1 = 10;
var_dump($int1);
print "<br>";
$int2 = -10;
var_dump($int2);
print "<br>";
$int3 = 0x5C; // 十六进制
var_dump($int3);
echo "<br>";
$int4 = 057;
var_dump($int4); // 八进制
echo "<br>";
echo $int4;
echo "<br>";
4.3 浮点型-float
带小数部分的数字,或指数形式。
$x = 10.365;
var_dump($x);
echo "<br>";
$x = 2.4e3; // 2.4*10三次方
var_dump($x);
echo "<br>";
4.4 布尔型-bool
$t = true;
$f = false;
echo $t; // true为1,false为0
var_dump($f); // bool(false)
print "<br>";
4.5 数组-array
PHP中数组有三种:
- 数值型数组:索引为数字,从0开始
- 关联数组:键值对形式,类似于python中的字典
- 多维数组:数组中的元素仍然是数组
-
数值型数组:
$colors = array("blue", "red", "yellow"); // 创建数组
计算数组长度:
echo count($colors); // 3
遍历:
for($x=0;$x<count($colors);$x++){ echo $colors[$x]."<br>"; }
-
关联数组
$students = array('man'=>'zhaoyun','woman'=>'xiaoqiao'); // 创建数组
计算数组长度
echo count($students);
遍历关联数组要使用
foreach
foreach($students as $key=>$value){ echo "key is ".$key." value is ".$value; }
-
输出数组测试
var_dump($colors); // array(3) { [0]=> string(4) "blue" [1]=> string(3) "red" [2]=> string(6) "yellow" } echo "<br>"; echo $colors; // 输出结果为Array;直接打印数组变量无法输出所有元素的值。 // 此功能可靠print_r实现 echo "<br>"; print_r($colors); // Array ( [0] => blue [1] => red [2] => yellow ) echo "<br>"; echo $colors[1]; // red echo "<br>";
-
数组排序
-
sort(): 升序排序
-
rsort():降序排序
-
asort():根据值升序
-
ksort():根据键升序
-
arsort():根据值降序
-
krsort():根据键降序
排序函数会对原数组内容排序,然后将排好序的内容覆盖原数组的顺序。
$num_list = array(1,3,4,8,2,7); print_r($num_list); // Array ( [0] => 1 [1] => 3 [2] => 4 [3] => 8 [4] => 2 [5] => 7 ) echo "<br>"; sort($num_list); print_r($num_list); // Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 7 [5] => 8 )
4.6 NULL
表示该变量无值,设置为NULL可用来清空变量数据
$x = ""; // x为空字符串
$y = NULL; // y为NULL值
var_dump($x); // string(0) ""
echo "<br>";
var_dump($y); // NULL
5. 类型比较
==
: 松散比较,只比较值,不比较类型。===
: 严格比较,比较值和类型。