PHP初学习

2023-12-22 06:40:47

PHP

基础知识
<?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/#加密

转换布尔值
  • 当转换为boolean时,以下值被认为是FALSE:
    • 布尔值FALSE本身
    • 整形值 0(零)
    • 浮点型值 0.0(零)
    • 空字符串,以及字符串 “0”
    • 不包括任何元素的数组
    • 特殊类型 NULL(包括尚未赋值的变量)
    • 从空标记生成的SimpleXML对象
    • 所有其他值都被认为是TRUE(包括任何资源和NAN)
运算符
  • 比较运算符,允许对两个值比较
运算符名称描述实例
x==y等于如果x等于y,则返回true5==8返回false
x===y绝对等于如果x等于y,且它们类型相同,则返回true5==“5”返回false
x!=y不等于如果x不等于y,则返回true5!==8返回true
x<>y不等于如果x不等于y,则返回true5<>8返回true
x!===y绝对不等于如果x不等于y,或它们的类型不相同,则返回true5!=="5"返回true
x>y大于如果x大于y,则返回true5>8返回false
x<y小于如果x小于y,则返回true5<8返回true
x>=y大于等于如果x大于或等于y,则返回true5>=8返回false
x<=y小于等于如果x小于或等于y,则返回true5<=8返回true
  • 逻辑运算符,将值进行逻辑运算。主要有与、或、非等逻辑。
运算符名称例子结果
and$x and $y如果 x 和 x和 xy都为true,则返回true
&&$x && $y如果 x 和 x和 xy都为true,则返回true
or$x or $y如果 x 和 x和 xy至少有一个为true,则返回true
||$x || $y如果 x 和 x和 xy至少有一个为true,则返回true
xor异或$x xor $y如果 x 和 x和 xy有且仅有一个为true,则返回true
!$x如果$x不为true,则返回true
  • 运算符优先级表
结合方向运算符附加信息
clone newclone和new
[array()
++ – ~ (int) (float) (string) (array) (object) (bool) @类型和递增/递减
instanceof类型
逻辑运算符
* / %算术运算符
+ - .算术运算符和字符串运算符
<< >>位运算符
== != === !== <>比较运算符
&位运算符和引用
^位运算符
|位运算符
&&逻辑运算符
||逻辑运算符
?:三元运算符
= += -= *= /= .= %= &= |= ^= <<= >>= =>赋值运算符
and逻辑运算符
xor逻辑运算符
or逻辑运算符
,多处用到
  • 数组运算符
运算符名称例子结果
+联合$x + $y x 和 x和 xy的联合(但不覆盖重复的键)
==相等$x == $y如果 x 和 x和 xy拥有相同的键:值对,则返回true
===全等$x === $y如果 x 和 x和 xy拥有相同的键:值对,且顺序相同、类型相同则返回true
!=不相等$x != $y如果 x 不等于 x不等于 x不等于y,则返回true
<>不相等$x <> $y如果 x 不等于 x不等于 x不等于y,则返回true
!===不全等$x !=== $y如果 x 与 x与 xy不完全相同,则返回true
  • 递增/递减运算符
    • PHP支持C风格的前后递增与递减运算符
    • 递增/递减运算符不影响布尔值。递减NULL值没有效果,但是递增NULL的结果是1,也就是说递增/递减运算过程中,不会把操作数转换成整数后再运算,如果操作数是布尔值,则直接返回结果
例子名称效果
++$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
类型比较
  • 虽然PHP是弱类型语言,但是也需要明白变量类型及它们的意义,因为我们经常需要对PHP变量进行比较,包含松散比较和严格比较:
    • 松散比较:使用两个等号==比较,只比较值,不比较类型
    • 严格比较:用三个等号===比较,除了比较值还比较类型
  • 比较多种类型
    • null和string:将null转化成"",进行词汇的比较
    • bool和任意其他的类型:转化为bool FALSE|TRUE
    • string和number:将字符串转化成数字,按照普通数学比较

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

特殊语句
  • foreach语句:用于遍历数组,仅能用于数组和对象。每进行一次循环,当前数组元素的值就会被赋值给$value变量(数组指针会逐一地移动),在进行下一次循环时,将看到数组中的下一个值

    • foreach($array as $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:

      • 上传文件使用,$_FILES 主要用在当需要上传二进制文件的地方,录入上传一个abc.mp3文件,则服务器端需要获得该文件的相关信息,则通过变量 F I L E S 来取得。 _FILES 来取得。 F?ILES来取得。_FILES 超级全局变量包含通过POST方法向服务器上传的数据的有关信息。这个超级全局变量与其他的变量有所不同,它是一个二维数组,包含5个元素。
      //前段上传文件示例代码
      /**创建一个文件上传表单
      允许用户从表单上传文件是非常有用的。
      请看下面这个供上传文件的 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";
        }
      ?>
      

文章来源:https://blog.csdn.net/qq_59470001/article/details/135120011
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。