PHP基础学习记录
——PHP Foundation——
主要总结自https://www.w3school.com.cn/php/index.asp,方便自习
PHP 文件通常包含 HTML 标签以及一些 PHP 脚本代码;脚本以 <?php 开头,以 ?> 结尾。
<html>
<body> <h1>我的第一张 PHP 页面</h1> <?php echo "Hello World!"; ?> </body> </html>
————PHP变量
①使用规则:
- 变量以 $ 符号开头,其后是变量的名称
- 变量名称必须以字母或下划线开头
- 变量名称不能以数字开头
- 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
- 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
-
PHP 没有创建变量的命令,变量会在首次为其赋值时被创建。
②变量的作用域
变量的作用域指的是变量能够被引用/使用的那部分脚本,分为local,global,static
§ 函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
§ 函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
§通常,当函数完成/执行后,会删除所有变量。不过,有时我需要不删除某个局部变量,就需要用static定义它
<?php $x=5; $y=10; function myTest() { global $x,$y;//global使得myTest可以访问到函数外的数据 $y=$x+$y; } myTest(); echo $y; // 输出 15
function myExam() { static $a=0; echo $a; $a++; }
myExam();//输出1 myExam();//输出2 myExam();//输出3?>
————PHP输出方式
①echo - 能够输出一个以上的字符串,且没有返回值
echo "语句";
echo $a
echo "语句1","语句2","语句2“;
echo ”语句$a”;
②print - 只能输出一个字符串,并始终返回 1
用法同echo
————PHP数据类型
①字符串
strlen() 返回长度 、 str_word_count()返回单词个数 、 strrev()倒序输出 、 strpos()用于检索字符串内指定的字符或文本。
<?php echo strpos("Hello world!","world");//输出6 ?>
count() 函数用于返回数组的长度(元素数)、
str_replace() 替换字符串文本
<?php echo str_replace("world", "Kitty", "Hello world!"); // 输出 Hello Kitty! ?>
②浮点数 ③整数 ④逻辑
⑤数组
在 PHP 中,array() 函数用于创建数组;PHP中的数组类型有三种。
§索引数组:索引是从0开始自动分配的,参考c语言中的数组。
$cars=array("Volvo","BMW","SAAB");//$cars[0]="Volvo";$cars[1]="BMW";$cars[2]="SAAB";
echo "my car is a car{array [0]}";//输出My car is a Volvo
遍历
<?php $cars=array("porsche","BMW","Volvo"); $arrlength=count($cars); for($x=0;$x<$arrlength;$x++) { echo $cars[$x]; echo "<br>"; } ?>
§关联数组:关联数组是使用你您分配给数组的指定键的数组。
即将数组按变量名赋值或赋字符串。
<?php $age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");//$age['Bill']="63";$age['Steve']="56";$age['Elon']="47";
echo "Elon is " . $age['Elon'] . " years old."; ?>//Elon is 47 years old.
遍历
<?php $age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47"); foreach($age as $x=>$x_value) { echo "Key=" . $x . ", Value=" . $x_value; echo "<br>"; } ?>
§对数组排序
sort() - 以升序对数组排序
rsort() - 以降序对数组排序
asort() - 根据值,以升序对关联数组进行排序
ksort() - 根据键,以升序对关联数组进行排序
<?php
$age=array("Bill"=>"63","Steve"=>"56","Elon"=>"47");
ksort($age);foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>//输出:Key=Bill, Value=63
// Key=Elon, Value=47
// Key=Steve, Value=56
arsort() - 根据值,以降序对关联数组进行排序
krsort() - 根据键,以降序对关联数组进行排序
⑥对象
基本语法
<?php
class phpClass { //类使用 class 关键字后加上类名定义。
var $var1;
var $var2 = "constant string"; //类的变量使用 var 来声明, 变量也可以初始化值。
function myfunc ($arg1, $arg2) //函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问。
{
……
}
……
}
?>
🌙类创建后,我们可以使用 new 运算符来实例化该类的对象:
<?php
class Site {
/* 成员变量 */
var $url;
var $title;
/* 成员函数 */
function setUrl($par){
$this->url = $par;
}
function getUrl(){
echo $this->url . PHP_EOL;
}
function setTitle($par){
$this->title = $par;
}
function getTitle(){
echo $this->title . PHP_EOL;
}
}$taobao = new Site;
$taobao->setTitle( "淘宝" );
$taobao->setUrl( 'www.taobao.com' );
⑦NULL值
————PHP常量
有效的常量名以字符或下划线开头;常量名称前面没有 $ 符号
设置常量使用 define() 函数 - 它使用三个参数:
- 首个参数定义常量的名称
- 第二个参数定义常量的值
- 可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。、
<?php
define("GREETING", "Welcome to my home!");
echo GREETING; //输出 Welcome to my home!
?>
————PHP特殊的字符串运算符
① . 串接
② .= 串接并赋值
<?php
$txt1 = "Hello";
$txt2 = " world!";
echo $txt1 . $txt2; //输出Hello world!
?><?php
$txt1 = "Hello";
$txt2 = " world!";
$txt1 .= $txt2;
echo $txt1; //输出Hello world!
?>
————PHP的主要语句
① 条件语句
if语句、if……else语句、if……else if……else语句
Switch语句
②循环语句
§for语句
参考c语言的for循环,注意需要在()里面的变量前均添加符号"$"。
§while语句、do……while语句
参考c语言的循环语句,同上
§foreach语句
基本语法
foreach($array as $Value){
code to be executed
}
🌙每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。
E.G
<?php $colors = array("red","green","blue","yellow"); foreach ($colors as $value) { echo "$value <br>"; } ?>
//输出red
green
blue
yellow
————PHP超全局变量
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。
①$GLOBALS 用于在 PHP 脚本中的任意位置访问全局变量,类似global
<?php $x = 75; $y = 25; function addition() { $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; } addition(); echo $z; ?>
②$_SERVER 保存关于报头、路径和脚本位置的信息。

https://www.w3school.com.cn/php/php_superglobals.asp
③PHP $_REQUEST 用于收集 HTML 表单提交的数据。
实例:下面的例子展示了一个包含输入字段及提交按钮的表单。当用户通过点击提交按钮来提交表单数据时, 表单数据将发送到 <form> 标签的 action 属性中指定的脚本文件。在这个例 子中,我们指定文件本身来处理表单数据。如果您需要使用其他的 PHP 文件来处理表单数据,请修改为您选择的文件名即可。然后,我们可以使用超级全局变量 $_REQUEST 来收集 input 字段的值:
实例来源于w3school
<html> <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">//$_SERVER['PHP_SELF']是返回当前执行脚本的文件名 Name: <input type="text" name="fname"> <input type="submit"> </form> <?php $name = $_REQUEST['fname']; echo $name; ?> </body> </html>
//输出:
————PHP多维数组
多维数组指的是包含一个或多个数组的数组。
二维数组
E.G.记录一个关于学生身高体重的表格,
现在这个两维数组包含了四个数组,并且它有两个索引(下标):行和列。
$student=array
(
array("Lihao",175,65);
array("Linfan",172,65);
array("Zhanghua",180,70);
)
如需访问 $cars 数组中的元素,我们必须使用两个索引(行和列):
<?php
echo $student[0][0].":身高:".$student[0][1].":体重:".$student[0][2].".<br>";
echo $student[1][0].":身高:".$student[1][1].":体重:".$student[1][2].".<br>";
echo $student[2][0].":身高:".$student[2][1].":体重:".$student[2][2].".<br>";
?>
通过for循环实现更加简便
<?php
for($r=0;$r<3;$r++)
{
echo "<p><b>学生 $r</b></p>";
echo "<ul>";
for ($a= 0; $a < 3; $a++) {
echo "<li>".$student[$r][$a]."</li>";
}
echo "</ul>";}
?>//输出样例:
学生1
- Lihao
- 175
- 65
————PHP日期
date() 函数把时间戳(表示具体事件发生的日期和事件)格式化为更易读的日期和时间。
基本语法:date(format,timestamp)
参数 | 描述 |
format | 必需。规定时间戳的格式。 |
timestamp | 可选。规定时间戳。默认是当前时间和日期。 |
① 显示基本的日期
d - 表示月里的某天(01-31)
m - 表示月(01-12)
Y - 表示年(四位数)
1 - 表示周里的某天
<?php echo "今天是 " . date("Y/m/d") . "<br>";//今天是2020/09/05 echo "今天是 " . date("Y.m.d") . "<br>";//今天是2020.09.05 echo "今天是 " . date("Y-m-d") . "<br>";//今天是2020-09-05 echo "今天是 " . date("l"); //今天是周六 ?>
h - 带有首位零的 12 小时小时格式
i - 带有首位零的分钟
s - 带有首位零的秒(00 -59)
a - 小写的午前和午后(am 或 pm)
<?php echo "现在时间是 " . date("h:i:sa");//现在时间是17:46:46 ?>
② 创建日期
§ 使用mktim()函数创建日期
基本语法:mktime(hour,minute,second,month,day,year)
<?php $d=mktime(9, 12, 31, 6, 10, 2015); echo "创建日期是 " . date("Y-m-d h:i:sa", $d); ?>
§ 使用strtotime()函数创建日期
基本语法:strtotime(time,now)
<?php $d=strtotime("10:38pm April 15 2015"); echo "创建日期是 " . date("Y-m-d h:i:sa", $d); ?>
strtotime的灵活使用
$d=strtotime("tomorrow");$d=strtotime("next Saturday");$d=strtotime("+3 moths");
§实例 来自wsdchool
输出下周六的日期
<?php $startdate = strtotime("Saturday"); $enddate = strtotime("+6 weeks",$startdate); while ($startdate < $enddate) { echo date("M d", $startdate),"<br>"; $startdate = strtotime("+1 week", $startdate); } ?>
//Sep 05
Sep 12
Sep 19
Sep 26
Oct 03
Oct 10
输出七月四日之前的天数
<?php $d1=strtotime("December 31"); $d2=ceil(($d1-time())/60/60/24); echo "距离十二月三十一日还有:" . $d2 ." 天。"; ?>
————PHP文件
PHP 拥有的多种函数可供创建、读取、上传以及编辑文件。
假设有一个名为 "test.txt" 的文本文件,存放在服务器上:
少年游·长安古道马迟迟
作者:柳永 宋代
长安古道马迟迟,高柳乱蝉嘶。夕阳鸟外,秋风原上,目断四天垂。
归云一去无踪迹,何处是前期?狎兴生疏,酒徒萧索,不似少年时。
①文件打开fopen()
基本语法:fopen("文件名(带扩展名)", "打开方式")
模式 | 描述 |
r | 打开文件为只读。文件指针在文件的开头开始。 |
w | 打开文件为只写。删除文件的内容或创建一个新的文件,如果它不存在。 文件指针在文件的开头开始。 |
a | 打开文件为只写。文件中的现有数据会被保留。创建新的文件,如果文件不存在。 文件指针在文件结尾开始。 |
x | 创建新文件为只写。返回 FALSE 和错误,如果文件已存在。 |
r+ | 打开文件为读/写、文件指针在文件开头开始。 |
w+ | 打开文件为读/写。删除文件内容或创建新文件,如果它不存在。文件指针在文件开头开始。 |
a+ | 打开文件为读/写。文件中已有的数据会被保留。文件指针在文件结尾开始。创建新文件,如果它不存在。 |
x+ | 创建新文件为读/写。返回 FALSE 和错误,如果文件已存在。 |
②文件读取fread()
基本语法:fread() 的第一个参数包含待读取文件的文件名,第二个参数规定待读取的最大字节数。
fread($myfile , filesize("test.txt"));
③文件关闭fclose()
基本语法:fopen("文件名(带扩展名)", "关闭方式")
<?php
$myfile = fopen("test.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("test.txt"));
fclose($myfile);
?>
④读取单行文件 fgets()
🌙调用 fgets() 函数之后,文件指针会移动到下一行。
<?php
$myfile = fopen("test.txt", "r") or die("Unable to open file!");
echo fgets($myfile);
fclose($myfile);
?>
//输出:少年游·长安古道马迟迟
⑤检查文件End-Of-File - feof()
feof() 函数检查是否已到达 "end-of-file" (EOF)。
🌙feof() 对于遍历未知长度的数据很有用。
<?php
$myfile = fopen("test.txt", "r") or die("Unable to open file!");
// 输出单行直到 end-of-file
while(!feof($myfile)) {
echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>
⑥读取单字符fgetc()
🌙与读取单行相同,在调用 fgetc() 函数之后,文件指针会移动到下一个字符。
<?php
$myfile = fopen("test.txt", "r") or die("Unable to open file!");
// 输出单字符直到 end-of-file
while(!feof($myfile)) {
echo fgetc($myfile);
}
fclose($myfile);
?>
⑦创建文件fopen()
fopen() 函数也用于创建文件。
🌙用 fopen() 打开并不存在的文件,此函数会创建文件,假定文件被打开为写入(w)或增加(a)。
⑧写入文件fwrite()
基本语法:fwrite() 的第一个参数包含要写入的文件的文件名,第二个参数是被写的字符串。
<?php
$myfile = fopen("test.txt", "w") or die("Unable to open file!");
$txt = "柳永,字景庄\n";
fwrite($myfile, $txt);
$txt = "北宋著名词人\n";
fwrite($myfile, $txt);
fclose($myfile);
?>
覆盖
如果现在 "text.txt" 包含了一些数据,我们可以展示在写入已有文件时发生的的事情。🌙所有已存在的数据会被擦除并以一个新文件开始。
2020-09-0521:44:20