https://www.bilibili.com/video/BV1vu4y1z7YV/?p=22
https://www.bejson.com/runcode/php/
输出方法:echo和print
不同点:
- echo - 能够输出一个以上的字符串,英文逗号隔开
- print - 只能输出一个字符串,并始终返回1
- echo比print稍快,并且开销低
<?php
echo "11";
echo "1", "2", "3";
echo("111");
?>
有无括号均可使用:echo 或 echo() 或 print 或 print()
注释
// 单行
# 单行
/*
多行
*/
变量
$a = 11;
# 下划线命名法
$first_name='zhang';
# 小驼峰命名法
$firstName ='zhang';
# 大驼峰命名法
$FirstName ='zhang';
变量以$符号开头,其后是变量的名称
变量名称对大小写敏感($y与$Y是两个不同的变量)
PHP变量名称对大小写敏感!
空白符
echo '
';
$a = '
';
数据类型
字符串、整数、浮点数、逻辑(布尔型)、数组、对象、NULL、资源类型
- 用var_dump()会返回变量的数据类型和值,一般用于开发调试时使用
- 只获取数据类型 echo gettype($a);
字符串可以是单引号和双引号,区别:双引号可以输出变量;
$a = "猫";
var_dump($a); // string(3) "猫"
echo gettype($a); // string
echo "a的值是:$a";
EOF 界定符
变量会被解析
<?php
$a = 123;
echo <<<EOF666
$a<hr/>
EOF666;
?>
算数运算符
向下取整 intdiv(3.333); // 3
向上取整
比较运算符
$a = 10;
$b = '10';
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
!= 或 <>
!==
条件语句
if(){
}elseif(){
}else{
}
switch(n){
case 1:
break;
case 2:
break;
default:
}
for($i = 1; i < 4; i++){
}
$i = 1;
white($i <= 5){
$i++;
}
$i = 1;
do{
// ...
$i++;
}while($i <= 5)
php 有 continue 和 break;
如果是 break 3; 表示跳出3层循环
数组
数值数组
$a = array("", "", "");
$b = ["", "", ""];
print_r($a);
$a = [];
$a[3] = '43';
print_r($a);
array
(
[3] => "43"
)
关联数组
关联数组是使用您分配给数组的指定的键的数组
$age = ['mao' => 12, "dog" => 15];
$age['pig'] = 55;
注意:
$a = [
"2",
"aa" => "猫1"
"t",
"aa" => "狗1"
"yy"
];
# 结果:
Array(
[0] => "2"
[aa] => "狗1"
[1] => "t"
[2] => "yy"
)
数组长度 echo count($age);
遍历数组
for($i=0; $i <count($a); $i++){
echo $a[$i];
echo "<br>";
}
foreach($a as $value){
}
foreach($a as $key => $value){
}
函数
- print_r();
- count();
- time(); // int类型时间戳
- date('Y-m-d H:i:s'); // 2023-09-26 15:29:56
- ...
function func($a, $b){ return $a + $b; }
echo func(2,3);
严格限制函数参数的类型:
declare(strict_type=1); // 使用严格模式
function func(int $a, int $b){} // $a 和 $b 只能使用int类型,否则报错
func(123,'453'); // 错误
变量作用域
变量的作用域是 脚本中 变量 可被引用/使用 的部分。
局部和全局(global)作用域
- 在所有函数外部定义的变量,拥有全局作用域
- 除了函数外,全局变量可以被脚本中的任何部分访问
- 要在一个函数中访问一个全局变量,需要使用global关键字
- 函数内部声明的变量是局部变量,仅能在函数内部访问
$a = "全局a";
function test(){
global $a;
$b = "234";
echo $a;
}
test();
echo $b;
Static作用域
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候希望某个局部变量不要被删除。
要做到这一点,请在第一次声明变量时使用static关键字
每次调用该函数时,该变量将会保留着函数前一次被调用时的值,但是该变量仍然是函数的局部变量
function test(){
static $a = 0;
echo $a;
$a++;
echo PHP_EOL; // 换行符
}
test();
test();
test();
删除变量 unset($a);
但是注意,unset不能删除全局变量,如下:
$a = 234;
function func(){
global $a;
unset($a); // 无法删除全局变量 $a
}
func();
var_dump($a); // 还能显示 int(234)
判断变量是否存在:isset($a);
超级全局变量
任何位置、任何.php文件都能使用!!!
$GLOBALS
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
$GLOBALS
print_r($GLOBALS);
Array
(
[_GET] => Array
(
)
[_POST] => Array
(
)
[_COOKIE] => Array
(
)
[_FILES] => Array
(
)
[argv] => Array
(
[0] => script.php
)
[argc] => 1
[_SERVER] => Array
(
[JUDGE0_VERSION] => 1.9.0
[LANGUAGE] => en_US:en
[PWD] => /box
[HOME] => /tmp
[LANG] => en_US.UTF-8
[JUDGE0_HOMEPAGE] => https://judge0.com
[JUDGE0_SOURCE_CODE] => https://github.com/judge0/api
[JUDGE0_MAINTAINER] => Herman Zvonimir Došilović
[SHLVL] => 1
[LC_ALL] => en_US.UTF-8
[PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
[LIBC_FATAL_STDERR_] => 1
[_] => /usr/local/php-7.4.1/bin/php
[PHP_SELF] => script.php
[SCRIPT_NAME] => script.php
[SCRIPT_FILENAME] => script.php
[PATH_TRANSLATED] => script.php
[DOCUMENT_ROOT] =>
[REQUEST_TIME_FLOAT] => 1711836076.2897
[REQUEST_TIME] => 1711836076
[argv] => Array
(
[0] => script.php
)
[argc] => 1
)
[GLOBALS] => Array
*RECURSION*
)
$a = "zhangsan";
function func(){
$GLOBALS["a"] = "lisi";
}
func();
echo $a; // lisi