您的位置:首页 > 汽车 > 新车 > PHP学习:PHP基础

PHP学习:PHP基础

2024/10/23 11:22:46 来源:https://blog.csdn.net/qq_55038440/article/details/140710185  浏览:    关键词:PHP学习:PHP基础

以.php作为后缀结尾的文件,由服务器解析和运行的语言。

一、语法

PHP 脚本可以放在文档中的任何位置。

PHP 脚本以 <?php 开始,以 ?> 结束。

<!DOCTYPE html>
<html>
<body><h1>My first PHP page</h1><?php
echo "Hello World!";
?></body>
</html>

二、变量

PHP中无声明变量,$+变量名即为PHP的变量,在赋值的时候,自动创建变量。

<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>

PHP 变量规则:

  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格
  • 变量名是区分大小写的($y 和 $Y 是两个不同的变量)

三、数据类型

1.String字符串

单行字符串

        由双引号包裹的字符组成的序列。

<?php 
$x = "Hello world!";
echo $x;
echo "<br>"; 
$x = 'Hello world!';
echo $x;
?>
字符串连接(并置运算符)

字符串的连接用并置运算符的' . '连接。

<?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
?>
字符串查找(strpos()函数)

        用来在目标字符串里查找子串,第一个参数是目标字符串,第二个参数是要查找的子串,返回子串第一次出现的位置。

<?php
echo strpos("Hello world!","world");
?>
//返回6
字符串长度(strlen()函数)

返回字符串的长度。

<?php
echo strlen("Hello world!");
?>
多行字符串EOF

         定义多行字符串的方法,可以用来输出html代码块。

<?php
$x= <<<EOF<h1>我的第一个标题</h1><p>我的第一个段落。</p>
EOF;
// 结束需要独立一行且前后不能空格
echo $x
?>

 注意事项:

  •  EOF可以用任意大写字符代替,但要保证开始字符和结束字符相同。
  • 结束字符需要独立一行且前后不能空格
  • 位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在EOF中,变量不需要用连接符 . 或 , 来拼接。

2.Integer整型

        整型可以用三种格式来指定:十进制 十六进制( 以 0x 为前缀)八进制(前缀为 0)

<?php 
$x = 5985;
var_dump($x);
echo "<br>"; 
$x = -345; // 负数 
var_dump($x);
echo "<br>"; 
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
?>

        var_dump(变量名):可以输出变量的数据类型和值,还可以显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>

3.Float浮点型

浮点数是带小数部分的数字,或是指数形式。

<?php 
$x = 10.365;
var_dump($x);
echo "<br>"; 
$x = 2.4e3;
var_dump($x);
echo "<br>"; 
$x = 8E-5;
var_dump($x);
?>

4.Boolean布尔型

布尔型可以是 TRUE 或 FALSE,布尔型通常用于条件判断。

$x=true;
$y=false;

5.Array数组

创建数组

使用函数  array()创建数组。

<?php 
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
?>
数值数组

数值数组就是普通的一维数组

<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
关联数组

关联数组更像映射map数组,需要指定键值和键名,键名要用符号 " => " 与键值连接。

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
多维数组

语法

array (array (elements...),array (elements...),...
)

多维数组就是一维数组里的元素还是一维数组。

<?php
// 二维数组:
$cars = array
(array("Volvo",100,96),array("BMW",60,59),array("Toyota",110,100)
);
?>
<?php
$sites = array
("runoob"=>array("菜鸟教程","http://www.runoob.com"),"google"=>array("Google 搜索","http://www.google.com"),"taobao"=>array("淘宝","http://www.taobao.com")
);
print("<pre>"); // 格式化输出数组
print_r($sites);
print("</pre>");
?>

 遍历数组

count()函数:返回数组的长度

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);for($x=0;$x<$arrlength;$x++)
{echo $cars[$x];echo "<br>";
}
?>
数组排序
  • sort() - 对数组进行升序排列
  • rsort() - 对数组进行降序排列
  • asort() - 根据关联数组的值,对数组进行升序排列
  • ksort() - 根据关联数组的键,对数组进行升序排列
  • arsort() - 根据关联数组的值,对数组进行降序排列
  • krsort() - 根据关联数组的键,对数组进行降序排列
<?php$cars=array("Volvo","BMW","Toyota");sort($cars);
?>

6.Object对象

使用class声明对象,内部要定义一个构造函数,在新建对象时候自动调用。

<?php
class Car
{var $color;function __construct($color="green") {//构造函数$this->color = $color;}function what_color() {return $this->color;}
}
?>

7.Resource资源类型

        resource 是一种特殊变量,保存了到外部资源的一个引用。常见资源数据类型有打开文件、数据库连接、图形画布区域等。

        由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。

        使用 get_resource_type() 函数可以返回资源(resource)类型。

<?php
$c = mysql_connect();
echo get_resource_type($c)."\n";
// 打印:mysql link$fp = fopen("foo","w");
echo get_resource_type($fp)."\n";
// 打印:file$doc = new_xmldoc("1.0");
echo get_resource_type($doc->doc)."\n";
// 打印:domxml document
?>

七、条件判断语句

if.......else条件语句

<?php
$t=date("H");
if ($t<"10")
{echo "Have a good morning!";
}
elseif ($t<"20")
{echo "Have a good day!";
}
else
{echo "Have a good night!";
}
?>

switch条件语句

<?php
$favcolor="red";
switch ($favcolor)
{
case "red":echo "你喜欢的颜色是红色!";break;
case "blue":echo "你喜欢的颜色是蓝色!";break;
case "green":echo "你喜欢的颜色是绿色!";break;
default:echo "你喜欢的颜色不是 红, 蓝, 或绿色!";
}
?>

八、循环

1.while循环

<html>
<body><?php
$i=1;
while($i<=5)
{echo "The number is " . $i . "<br>";$i++;
}
?></body>
</html>

 2.do....while循环

<html>
<body><?php
$i=1;
do
{$i++;echo "The number is " . $i . "<br>";
}
while ($i<=5);
?></body>
</html>

3.for循环 

<?php
for ($i=1; $i<=5; $i++)
{echo "数字为 " . $i . PHP_EOL;
}
?>

4.foreach循环

语法:数值数组

        每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。

foreach ($array as $value)
{要执行代码;
}

 案例:

<?php
$x=array("Google","Runoob","Taobao");
foreach ($x as $value)
{echo $value . PHP_EOL;//PHP_EOL: 这是一个 PHP 内置的常量,表示特定操作系统下的换行符。
}
?>

语法:关联数组

        每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值

foreach ($array as $key => $value)
{要执行代码;
}

案例:

<?php
$x=array(1=>"Google", 2=>"Runoob", 3=>"Taobao");
foreach ($x as $key => $value)
{echo "key  为 " . $key . ",对应的 value 为 ". $value . PHP_EOL;
}
?>

九、函数

1.自定义函数

语法:

<?php
function functionName()
{// 要执行的代码return 返回值
}
?>

案例:

<?php
function add($x,$y)
{$total=$x+$y;return $total;
}echo "1 + 16 = " . add(1,16);
?>

2.isset函数

语法:

bool isset( $var )

返回值:

isset() 返回一个布尔类型的值。

  • true :变量「已定义」
  • false:变量「未定义」或变量为 NULL 或 变量被 unset()

十、常量

定义常量define

语法:

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

        case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的。 

案例: 

<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com");
echo GREETING;    // 输出 "欢迎访问 Runoob.com"
echo '<br>';
echo greeting;   // 输出 "greeting",但是有警告信息,表示该常量未定义
?>

 定义常量const

语法:

const CONSTANT_NAME = "value";

案例: 

const SITE_URL = "https://www.runoob.com";
echo SITE_URL; // 输出 "https://www.runoob.com"

总结

这两种常量的定义方法在引用时候无需加$,因为其为常量不是变量。 

十一、超级全局变量

        超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用

 变量名解释

$_COOKIE

存储客户端的 Cookie 数据的全局数组
 $_GET接受所有以 get 方式发送的请求的全局数组
$_POST接受所有以 post 方式发送请求的全局数组

$_REQUEST

用于收集来自 HTTP 请求的数据

 1.$_GET

获取url问号后面的数据,在url里#是锚定位符,GET方法无法获取锚定位符后面的内容

案例: 

<?php  
$name = $_GET['name']; // "John"  
$age = $_GET['age'];   // "25"  echo "姓名: " . htmlspecialchars($name) . "<br>";  
echo "年龄: " . htmlspecialchars($age);  //htmlspecialchars() 或 filter_input()可以避免SQL 注入和 XSS(跨站脚本攻击)
?>
<?php
$q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : '';
if($q) {if($q =='RUNOOB') {echo '菜鸟教程<br>http://www.runoob.com';} else if($q =='GOOGLE') {echo 'Google 搜索<br>http://www.google.com';} else if($q =='TAOBAO') {echo '淘宝<br>http://www.taobao.com';}
} else {?><form action="" method="get"> <input type="radio" name="q" value="RUNOOB" />Runoob<input type="radio" name="q" value="GOOGLE" />Google<input type="radio" name="q" value="TAOBAO" />Taobao<input type="submit" value="提交">
</form><?php
}
?>

2. $_POST

获取由POST方法提交的参数。 

 案例:

<?php
$q = isset($_POST['q'])? $_POST['q'] : '';
if(is_array($q)) {$sites = array('RUNOOB' => '菜鸟教程: http://www.runoob.com','GOOGLE' => 'Google 搜索: http://www.google.com','TAOBAO' => '淘宝: http://www.taobao.com',);foreach($q as $val) {// PHP_EOL 为常量,用于换行echo $sites[$val] . PHP_EOL;}} else {?><form action="" method="post"> <input type="checkbox" name="q[]" value="RUNOOB"> Runoob<br> <input type="checkbox" name="q[]" value="GOOGLE"> Google<br> <input type="checkbox" name="q[]" value="TAOBAO"> Taobao<br><input type="submit" value="提交">
</form><?php
}
?>

 3.$_COOKIE

设置Cookie

语法:

setcookie(name, value, expire, path, domain);

 参数说明:

  • name(必需):

                这是 cookie 的名称。它是一个字符串,必须符合变量命名规则。

  • value(必需):

                这是与 cookie 关联的值。它是一个字符串,表示你要存储在客户端的内容。

  • expire(可选):

                这是 cookie 过期的时间。它是一个 Unix 时间戳(即从1970年1月1日到现在的秒

                数),可以通过 time() 函数来获取当前的时间戳。如果设置为 0,cookie 会在浏

                览器会话结束时过期;如果设置为将来的时间,则 cookie 会在指定的时间到期。

  • path(可选):

    • 这是 cookie 可用的路径。默认值是当前脚本的路径。设置此参数可以限制 cookie 的可用范围。例如,如果设置为 /,那么该 cookie 可以在整个域名下的所有路径中使用。
  • domain(可选):

    • 这是 cookie 可用的域名。可以用来设置 cookie 的作用域。默认情况下,cookie 将只在所发出的域名下有效。如果指定了子域名(例如 example.com),则 cookie 也可以在子域名(如 www.example.com 和 sub.example.com)下使用。

案例:

setcookie() 函数用于设置 cookie,且setcookie() 函数必须位于 <html> 标签之前

<?php
$expire=time()+60*60*24*30;
setcookie("user", "runoob", $expire);
?><html>
.....

 获取Cookie的值

使用$_COOKIE超级全局数组来获取前面设定的Cookie值。

<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body><?php
if (isset($_COOKIE["user"]))echo "欢迎 " . $_COOKIE["user"] . "!<br>";
elseecho "普通访客!<br>";
?></body>
</html>

案例使用了isset函数来判断是否设置了Cookie

4. $_REQUEST

  $_REQUEST 是 PHP 中的一个超全局数组,用于收集来自 HTTP 请求的数据。它包含了 $_GET$_POST 两个数组中传递的数据。使用 $_REQUEST 时,可以方便地获取这两种方式发送的请求参数。

案例: 

// 假设用户通过 GET 或 POST 请求传递了一个名为 "username" 的参数  
$username = $_REQUEST['username'];  // 处理参数...  
echo "Hello, " . htmlspecialchars($username);

十二、面向对象(类)

十三、命名空间

1.定义命名空间

语法:

<?php  
// 定义代码在 'MyProject' 命名空间中  
namespace MyProject;  // ... 代码 ...  

案例: 单个文件多个命名空间(不推荐)

<?php  
namespace MyProject;const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }namespace AnotherProject;const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
?>  

 案例: 单个文件多个命名空间(推荐)

<?php
namespace MyProject {const CONNECT_OK = 1;class Connection { /* ... */ }function connect() { /* ... */  }
}namespace AnotherProject {const CONNECT_OK = 1;class Connection { /* ... */ }function connect() { /* ... */  }
}
?>

         当使用全局代码和命名空间代码混用时候,必须使用花括号{},并且HTML页面代码应该另写在一个不包含命名空间的文件里,通过require和include函数来引入

<?php
namespace MyProject {const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}namespace { // 全局代码
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>

 2.子命名空间

相当于目录与子目录的关系

<?php
namespace MyProject\Sub\Level{  //声明分层次的单个命名空间const CONNECT_OK = 1;class Connection { /* ... */ }function Connect() { /* ... */  }
}?>

参考资料

PHP 教程 | 菜鸟教程 (runoob.com)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com