<?php
#这是一个注释
echo "<h1>hello world</h1>";
//字符串拼接
$message="hello";
$name="你好";
$message."".$name;
echo "<br>";
//单引号与双引号的区别,单引号无法解析变量
echo "my name is $name"; //my name is 你好
echo 'my name is $name'; //my name is $name
echo "<br>";
//调试函数
var_dump($name); //string(6) "你好" //与echo区别是调试函数无返回值,还能查询变量的数据类型
//常量定义,一般用大写字母
define("MESSAGE","hello 你好",true);//这种方法已被启用
const MESSAGE = "hello 你好";
//布尔类型
$x1 = true;
$x2 = TRUE;
//类型检测
if(is_bool($x1)){
echo "我是布尔类型";
}
//<<<提示符 定义heredoc类型的字符串
#标识符 开始标记 结束标记
$name1 = "张三";
$message1 = <<<EOT
<h1>这是一个标签</h1>
<div class="box">这是一个div<a>这是一个a标签</a></div>
EOT;
echo $message1;
//数组
$arr = {"1",2};
$arr1 = [1,2,3,4];
var_dump($arr); //array(2){[0]=>string(1)"1"[1]=>int(2)}
echo "<br>";
var_dump($arr1); //array(4){[0]=>int(1)[1]=>int(2)[2]=>int(3)[3]=>int(4)}
//分配ID键
$arr2 = ["count"=>"hello","foo"=>123];
var_dump($arr2); //arry(2){["count"]=>string(5)"hello"["foo"]=>int(123)}
//运算符 ①连接运算符. ②连接赋值运算符.=
$a="hello";
$b=$a."world"; //hello world
$a.="world"; //hello world
//增删改查
//增
//删
unset($arr[1]);
unset($arr2["count"]);
echo "<br>";
//改
echo $arr[0] = 2;
echo $arr2["count"] = "你好";
echo "<br>";
//查
echo $arr[0];
echo "<br>";
echo $arr2["count"];
echo "<br>";
//对象
new Person(); //Person 类
class Person{ //自定义的类
var $count = 1;
function getCount(){
echo $this->count;
}
}
$instance = new Person(); //Person类 实例对象
//访问对象属性 js里是 对象.属性
echo $instance->count;
$instance->getCount();
?>
网址unbug.github.io/codeIf/#加密
运算符 | 名称 | 描述 | 实例 |
---|---|---|---|
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 |
运算符 | 名称 | 例子 | 结果 |
---|---|---|---|
and | 与 | $x and $y | 如果 x 和 x和 x和y都为true,则返回true |
&& | 与 | $x && $y | 如果 x 和 x和 x和y都为true,则返回true |
or | 或 | $x or $y | 如果 x 和 x和 x和y至少有一个为true,则返回true |
|| | 或 | $x || $y | 如果 x 和 x和 x和y至少有一个为true,则返回true |
xor | 异或 | $x xor $y | 如果 x 和 x和 x和y有且仅有一个为true,则返回true |
! | 非 | !$x | 如果$x不为true,则返回true |
结合方向 | 运算符 | 附加信息 |
---|---|---|
无 | clone new | clone和new |
左 | [ | array() |
右 | ++ – ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 |
无 | instanceof | 类型 |
右 | ! | 逻辑运算符 |
左 | * / % | 算术运算符 |
左 | + - . | 算术运算符和字符串运算符 |
左 | << >> | 位运算符 |
无 | == != === !== <> | 比较运算符 |
左 | & | 位运算符和引用 |
左 | ^ | 位运算符 |
左 | | | 位运算符 |
左 | && | 逻辑运算符 |
左 | || | 逻辑运算符 |
左 | ?: | 三元运算符 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 |
左 | and | 逻辑运算符 |
左 | xor | 逻辑运算符 |
左 | or | 逻辑运算符 |
左 | , | 多处用到 |
运算符 | 名称 | 例子 | 结果 |
---|---|---|---|
+ | 联合 | $x + $y | x 和 x和 x和y的联合(但不覆盖重复的键) |
== | 相等 | $x == $y | 如果 x 和 x和 x和y拥有相同的键:值对,则返回true |
=== | 全等 | $x === $y | 如果 x 和 x和 x和y拥有相同的键:值对,且顺序相同、类型相同则返回true |
!= | 不相等 | $x != $y | 如果 x 不等于 x不等于 x不等于y,则返回true |
<> | 不相等 | $x <> $y | 如果 x 不等于 x不等于 x不等于y,则返回true |
!=== | 不全等 | $x !=== $y | 如果 x 与 x与 x与y不完全相同,则返回true |
例子 | 名称 | 效果 |
---|---|---|
++$a | 前加 | a 的值加一,然后返回 a的值加一,然后返回 a的值加一,然后返回a |
$a++ | 后加 | 返回 a ,然后将 a,然后将 a,然后将a的值加一 |
-$a | 前减 | a 的值减一,然后返回 a的值减一,然后返回 a的值减一,然后返回a |
$a- | 后减 | 返回 a ,然后将 a,然后将 a,然后将a的值减一 |
//在PHP7+版本多了一个NULL合并运算符??,实例如下(①②两个作用一样)
#①如果$_GET['user']不存在返回'nobody',则返回$_GET['user']的值
$username = $_GET['user'] ?? 'nobody';
#②类似的三元运算符
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
//在PHP7+支持组合比较符也称为太空船操作符,符号为<=>。组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较
#语法格式
$c = $a <=> $b;
#解析如下
如果$a > $b,则$c的值为1; echo 2 <=> 1; //1
如果$a == $b,则$c的值为0; echo 1 <=> 1; //0
如果$a < $b,则$c的值为-1。 echo 1 <=> 2; //-1
foreach语句:用于遍历数组,仅能用于数组和对象。每进行一次循环,当前数组元素的值就会被赋值给$value变量(数组指针会逐一地移动),在进行下一次循环时,将看到数组中的下一个值
continue与break
在PHP中break和continue语句都可以用来跳出循环,包括while、do while、for和foreach循环。不同的是continue命令会终止循环体的单次循环,代码继续往下执行下一次循环,而break会终止整个循环体的循环。
continue
for($i=0;$i<10;$i++){
if($i=3){
continue; //打印结果:012456789
}
echo $i;
}
break
for($i=0;$i<10;$i++){
if($i=3){
break; //打印结果:012
}
echo $i;
}
超全局变量是在全部作用域中始终可用的内置变量。PHP中的许多预定义变量都是超全局的,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行global v a r i a b l e ; 就可以访问它们。常用的超全局变量有 variable;就可以访问它们。常用的超全局变量有 variable;就可以访问它们。常用的超全局变量有GLOBALS、$ _SERVER、$ _GET、$ _POST、$ _FILES、$ _COOKIE、$ _SESSION、$ _REQUEST、$ _ENV。//该部分内容详情看https://blog.csdn.net/zhichaosong/article/details/80507516
$GLOBALS:
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。
PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
主要用于在局部范围不可以使用全局变量时,但又需要使用该全局变量,就使用$GLOBALS。
<?php
$x = 75;
$y = 25;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
$ _REQUEST:
PHP $_REQUEST 用于收集 HTML 表单提交的数据。可以接受post和get两种方式的值
//以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 "Submit" 按钮提交表单数据时, 表单数据将发送至<form>标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据:
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit" value="提交">
</form>
<?php
$name = $_REQUEST['fname'];
echo $name;
?>
</body>
</html>
$ _POST:
PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method=“post”
//以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 "Submit" 按钮提交表单数据时, 表单数据将发送至<form>标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_POST 来收集表单中的 input 字段数据:
<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php
$name = $_POST['fname'];
echo $name;
?>
</body>
</html>
$ _GET:
PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method=“get”。
$_GET 也可以收集URL中发送的数据
//假设有一个包含参数的超链接HTML页面:
<html>
<body>
<a href="test_get.php?subject=PHP&web=runoob.com">Test $GET</a>
</body>
</html>
//当用户点击链接 "Test $GET", 参数 "subject" 和 "web" 将发送至"test_get.php",你可以在 "test_get.php" 文件中使用 $_GET 变量来获取这些数据。
以下实例显示了 "test_get.php" 文件的代码:
<html>
<body>
<?php
echo "Study " . $_GET['subject'] . " @ " . $_GET['web'];
?>
</body>
</html>
$ _SERVER:
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目.
//以下实例中展示了如何使用$_SERVER中的元素:
<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
$ _COOKIE:
用于会话控制,cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。
//①创建Cookie
//语法
setcookie(name, value, expire, path, domain);
//示例
<?php
setcookie("user", "Alex Porter", time()+3600);
/*创建名为 "user" 的 cookie,把为它赋值 "Alex Porter"。我们也规定了此 cookie 在一 小时后过期*/
?>
<html>
<body>
</body>
</html>
//②取回Cookie值
//示例a:取回了名为 "user" 的 cookie 的值,并把它显示在了页面上
<?php
// Print a cookie
echo $_COOKIE["user"];
// A way to view all cookies
print_r($_COOKIE);
?>
//示例b:使用 isset() 函数来确认是否已设置了 cookie
<html>
<body>
<?php
if (isset($_COOKIE["user"]))
echo "Welcome " . $_COOKIE["user"] . "!<br />";
else
echo "Welcome guest!<br />";
?>
</body>
</html>
$ _SESSION:
用于会话控制,PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。
当您运行一个应用程序时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。
通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久储存信息,可以把数据存储在数据库中。
Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。
//①开始 PHP Session :
/*在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
session_start() 函数必须位于 标签之前*/
<?php session_start(); ?>
<html>
<body>
</body>
</html>
//②存储 和使用Session 变量:
<?php
session_start();
// store session data
$_SESSION['views']=1;
?>
<html>
<body>
<?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>
</body>
</html>
//③终结 Session
/*如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。*/
//通过 unset() 函数用于释放指定的 session 变量:
<?php
unset($_SESSION['views']);
?>
/*通过 session_destroy() 函数彻底终结 session,将重置 session,您将失去所有已存储的 session 数据。*/
<?php
session_destroy();
?>
$ _ENV:
服务器端环境变量。PHP中的$_ENV是一个包含服务器端环境变量的数组,不同系统不完全一样。
部分变量示例:
$_ENV[ ‘HOSTNAME’ ] 服务器的主机名
$_ENV[ ‘SHELL’ ] 系统 shell
//$_ENV只是被动的接受服务器端的环境变量并把它们转换为数组元素,你可以尝试直接输出它:
//输出内容格式清晰,ThinkPHP可以直接用dump()
var_dump($_ENV);
//输出到屏幕
print_r($_ENV);
//输出key-value键值对
foreach($_ENV as $key=>$val){echo $key.'--------'.$val.'<br>';}
$ _FILES:
//前段上传文件示例代码
/**创建一个文件上传表单
允许用户从表单上传文件是非常有用的。
请看下面这个供上传文件的 HTML 表单:**/
<html>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html>
//后端处理文件示例代码:
<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
}
else
{
echo "Upload: " . $_FILES["file"]["name"] . "<br />";
echo "Type: " . $_FILES["file"]["type"] . "<br />";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
echo $_FILES["file"]["name"] . " already exists. ";
}
else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
}
else
{
echo "Invalid file";
}
?>