php基础
如何运行
这里用vscode举例
调出cmd
在终端输入php 名字+tab(tab自动补全名字)
记得要进入目标目录下
语法
在php文件中,既可以包含HTML代码,也可以包含php代码
而php代码必须用 <?php ?>包裹起来
举个例子
<html> <head> <title>Example</title> </head> <body> <?php echo "Hi, I'm a PHP script!";//可以看到php语句在HTML中 ?> </body> </html>
注释
// 注释当前一行
/包裹内容全部注释/
输入输出语句
输出
echo “hellow word\n”;
输出一个或者多个字符串
var_dump(“hello word”);
打印相关变量的信息
printf(“%s”,“hellow word\n”);
和c语言一样,格式化输出
var_export
输出或者返回一个变量的字符串表示
<?php echo "Hello World\n"; var_dump("Hello World"); printf("%s","hello word\n"); ?>
输入
fgets(STDIN): 获取输入的当前行
fread(STDIN,n): 获取前n个字符
fgetc(STDIN):获取一个字符
sscanf(string $str ,string KaTeX parse error: Expected ‘EOF’, got ‘&’ at position 17: …ormat [, mixed &̲… ]):将 str 按照 fromat 进行格式化解析
<?php $str = fgets(STDIN);//获取当前行 sscanf($str,"%s %d",$s,$d); echo $s,$d; ?>
变量
$a=1; $b; %c="hellow word";
$+变量名
如果为赋值直接使用,变量将为空
变量作用域
分为全局变量,局部变量和static关键字
全局变量:定义在函数外都可以使用的变量,在整个文件中都可以用,作用域是从定义处一直到文件结尾
局部变量:函数内定义,只能在函数内部使用,作用域就是函数定义范围内。函数内使用全局变量需要global关键字或者==$globals[变量名]==数组
static关键字:将变量生存周期变为全局,不会影响作用域
超级全局变量
$GLOBALS://一个包含了全部变量的全局数组。变量的名字就是数组的键。 $_SERVER://服务器和执行环境信息,是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组 $_GET:HTTP GET //变量,通过URL参数传递给当前脚本的变量的数组。 自动url解码 $_POST:HTTP POST// 变量,HTTP POST请求的。Content-Type 是 application/x-www-formurlencoded 或 multipart/form-data 时,会将变量以关联数组形式传入当前脚本 $_FILES:HTTP //文件上传变量,通过 HTTP POST方式上传到当前脚本的项目的数组 $_REQUEST:HTTP //Request 变量,默认情况下包含了 $_GET(自动url解码),$_POST 和$_COOKIE 的数组。 $_SESSION://Session 变量,当前脚本可用 SESSION 变量的数组 $_ENV://环境变量,通过环境方式传递给当前脚本的变量的数组。 $_COOKIE://HTTP Cookies,通过 HTTP Cookies方式传递给当前脚本的变量的数组 $php_errormsg://前一个错误信息 $HTTP_RAW_POST_DATA://原生POST数据 $http_response_header://HTTP 响应头,使用HTTP 包装器时,$http_response_header 将会被HTTP 响应头信息填充。 $argc://传递给脚本的参数数目,传递给脚本的参数数目 $argv:传递给脚本的参数数组,传递给脚本的参数数组
数据类型
数字型
$int1=1234 //十进制正整数 $int2=-1234 //负整数 $int3=01234 //八进制整数 $int4=0x1234 //十六进制整数 $float1=666.66 //浮点数 $float2=6.6666e2 //表示6.6666乘以10的2次方,为指数形式的浮点数
字符串型
$c1 = 'c' $c2 = "c" $s1 = 'str' $s2 = "str"
布尔型
只有true和false
$a = true; $b = false;
数组型
定义
PHP中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。
key的值必须是整型或者字符串型,values值可以是任何类型。
定义数组时如果不加key键,key值默认从0开始(下标从0)。
$array1 = [ "foo" => "bar", "bar" => "foo", ]; $array2 = ['a','b']; #等价于 $array2 = [ 0 => "a", 1 => "b"]; $array3 = array( "foo" => "bar", "bar" => "foo", ); $array4 = array("a","b"); #等价于 $array4 = array(0 =>'a', 1=>'b')
增加元素
改变赋值来增加元素
$arr['xxx']='yu';
删除元素
利用unser()函数
unset($arr['xianyu']);
查找元素
用key直接访问
var_dump($arr['aaa']);
修改元素
通过ket访问并且修改
$arr['aaa']='xianyu'
常量
定义
define ( string $name , mixed $value ) name:必选参数,常量名称,即标志符。 value:必选参数,常量的值。 define('SCHOOL','xianyu'); echo SCHOOL;
系统常量
名字 | 作用 |
---|---|
_LINE _ | 文件中的当前行号。 |
_FILE _ | 文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。 |
_DIR _ | 文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。 |
_FUNCTION _ | 函数名称(PHP 4.3.0 新加)。 |
_CLASS _ | 类的名称(PHP 4.3.0 新加)。 |
_TRAIT _ | Trait 的名字(PHP 5.4.0 新加)。 |
_METHOD _ | 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。 |
_NAMESPACE _ | 当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0增)。 |
运算符
算数运算符
符号 | 意义 |
---|---|
+ | 加 |
– | 减 |
* | 乘 |
/ | 除 |
% | 取余 |
++ | 累加 |
– | 累减 |
字符串运算符
只有一个英文句号 .
赋值运算符
符号 | 意义 |
---|---|
= | 右边的赋值给左边 |
+= | 左边的值加上右边的值 |
-= | 左边的值减去右边的值 |
*= | 左边的值乘右边的值 |
%= | 左边的值对右边的值取余数 |
.= | 左边字符串连接到右边 |
位运算
符号 | 意义 |
---|---|
& | 按位与 |
竖杠 | 按位或 |
^ | 按位异或 |
>> | 按位右移 |
<< | 按位左移 |
~ | 按位取反 |
逻辑运算符
符号 | 意义 |
---|---|
&&(and) | 逻辑与 |
两个竖杠 | 逻辑或 |
xor | 逻辑异或 |
! | 逻辑非 |
比较运算符
符号 | 意义 |
---|---|
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
== | 等于(不包括类型) |
=== | 完全等于(类型也要相等) |
!= | 不等于 |
其他运算符
符号 | 意义 |
---|---|
$ | 定义变量 |
& | 变量地址 |
@ | 屏蔽错误信息(扔到函数前头) |
-> | 应用对象方法或者属性 |
=> | 用于数组元素赋值) |
?: | 三目运算符 |
流程控制语句
if-elseif-else
if ($a > $b) { echo "a is bigger than b"; } elseif ($a == $b) { echo "a is equal to b"; } else { echo "a is smaller than b"; }
switch
switch ($i) { case 0: echo "i equals 0"; break; case 1: echo "i equals 1"; break; case 2: echo "i equals 2"; break; }
while
$i = 1; while ($i <= 10) { echo $i++; }
do-while
$i = 0; do { echo $i; } while ($i > 0);
for
or ($i = 1; $i <= 10; $i++) { echo $i; }
foreach
$arr = array("one", "two", "three"); foreach ($arr as $key => $value) { echo "Key: $key; Value: $value<br />\n"; } foreach ($arr as $value) { echo "Value: $value<br />\n"; }
函数
<?php function add_some_str_a($string) { $string .= 'and something extra.'; } function add_some_str_b(&$string) { $string .= 'and something extra.'; } $str = 'This is a string, '; add_some_str_a($str); echo $str."\n"; add_some_str_b($str); echo $str."\n"; ?>