
<?php //代码
//按照分号结尾;
//可以多行
echo "hello php";
//逗号可以执行
echo "hello","world","php";
//print智能输出一个字符串,并且返回1
print "string"; //输出string
echo print "string"; //返回1
$a= "hello";
echo $a;
//双引号可以直接在里面写变量$a
echo "a的值是$a"
//单引号都是字符串
echo '都是string$a'
//gettype获取类型
//var_dump($a)用于调试
//整数可以是十进制、十六进制(0x)、八进制(0开头)
$x=5986;
$y=0x5A86;
$z=0576;
$t=-5986;
var_dump($x);//int(5986)
var_dump($y);//int(23174)
var_dump($z);//int(382)
var_dump($t);//int(-5986)
//浮点数:有小数或指数(e)形式数字
$x=2.4e3;//float(2400)
//布尔型true / false
//数组使用=array("","","")
//或者=["","",""]
//数组调用数组里面的使用{arr["name"]}
//null,可以用来清空数据(大小不变)
$x=null;
//gettype获取类型
//EOF结尾必须独占一行,没有空格,中间的可以正常解析,变量也可以解析,变量无需点.连接,也不需要逗号连接,直接渲染出来(函数除外),html标签会被解析,php变量会被解析 双引号保留,但是双引号里面会有转转义效果,引号在EOF里面不印象转移效果,JSON就是EOF加上单引号就不会解析变量
echo <<<JSON
123 JSON $x $b
JSON;
//printf,允许变量占位符
$name="123";
$age=1;
printf("我是%s,今年%s",$name,$age)
?>
//sprintf不输出,但是有返回值(经常用)
//数组可嵌套,$a[0]可获取,超出下标返回null
<?php
$a=array("a","b","c","d");
$b=["aa","bb","cc","dd",["e1","e2","e3"]];
print_r($a);
print_r($b);
//数值数组:不按照个数来
$a[3]=3;
//关联数组,键位指定键
$age=["a"=>"test1","b"=>"test2"];
//或者:
$age1["a"]="test1";
$age1["b"]="test2";
count($age);// 返回长度
//遍历:
$b=["aa","bb","cc","dd"];
foreach($b as $v){
echo $v;
}
for ($i=0;$i<count($b);$i++){
echo $b[$i];
echo "<br>";
}
foreach($b as $key=>$value){
echo "$key"."+"."$value";
echo "\n";
}
?>
实战2

<?php
$title="cry的博客";
$bgColor="white";
$navbarArray = [
[
"href"=>"home",
"title"=>"首页"
],
[
"href"=>"about",
"title"=>"关于我"
],
[
"href"=>"posts",
"title"=>"博客"
],
[
"href"=>"contact",
"title"=>"联系我"
],
[
"href"=>"test",
"title"=>"测试"
]
];
$contentArray=[
[
"createday"=>"2025年7月19日",
"content"=>"原神,启动1"
],[
"createday"=>"2025年7月20日",
"content"=>"原神,启动2"
],[
"createday"=>"2025年7月21日",
"content"=>"原神,启动3"
]
]
?>
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>实战1-<?php echo $title?></title>
<style>
body{
font-family:Arial,sans-serif;
line-height:1.6;
margin:0;
padding:0;
background-color:<?php echo $bgColor;?>
}
.container{
max-width:1200px;
margin:0 auto;
padding:20px;
}
.navbar{
background-color:#333;
overflow:hidden;
}
.navbar a{
float:left;
display:block;
color:white;
text-align:center;
text-decoration:none;
padding:20px;
}
.navbar a.active{
background-color:#ddd;
color:red;
}
.navbar a:hover{
background-color:#ddd;
color:black;
}
.title{
text-align:center;
margin-bottom:20px;
}
.text-area{
width:80%;
margin:0 auto;
padding:20px;
border: 1px solid #ccc;
background-color:#f9f9f9;
}
.number{
width:40px;
height:40px;
display:inline-block;
background:#000;
color:#fff;
line-height:40px; /*垂直居中*/
text-align:center;/*水平居中 */
border-radius:50px;
}
.text-area .active{
background-color:red;
}
/*从大到小排序*/
<?php
foreach($contentArray as $key=>$value){
echo '
.number'.$key.'{
font-size:'.(12+(count($contentArray)-$key-1)*5).'px;
}
';
}
?>
</style>
</head>
<body>
<div class="navbar">
<?php
foreach($navbarArray as $key=>$data){
echo '<a '.($key == 0 ? 'class="active"' : '') .'
"href="#'. $data["href"] .'">'.$data["title"].'
</a>
';
}
?>
</div>
<div class="container">
<h1 class="title"> 欢迎来到我的博客</h1>
<?php
foreach($contentArray as $key=>$data){
?>
<div class="text-area">
<?php
echo '<span class="number number'.$key.($key==count($contentArray)-1? ' active">':'">');
?>
<?php echo $key?></span>
<span class="create-day"><?php echo $data["createday"]?></span>
<?php echo $data["content"];?>
</div>
<?php
}
?>
</div>
</body>
</html>
<?php
//严格模式设置参数类型
declare(strict_types=1);
//内置函数
var_dump(date('Y-m-d H:i:s')); //获取日期
function functionName($name){
return "Hello $name";
}
echo functionName("原神")
//传参,多个参数用逗号,分割;
function nowTime($type){
if($type=="time"){
return sprintf(date('Y-m-d H:i:s'));
}else if($type=="day"){
return sprintf(date('Y-m-d'));
}
}
echo nowTime("day")."\n";
echo nowTime('time');
//多个参数逗号分割,严格模式必须传int
function plus(int $a,int $b){
return $a+$b; //返回值
}
echo "\n".plus("hello",2);
?>
变量:局部和全局作用域
在函数外部定义的变量,有全局作用域,全局变量可以被除了脚本中的任何部分访问
要在一个函数内访问全局变量,需要使用global关键字
static作用域
一般一个函数完成,他的变量会被删除,加上static就可以不被删除
unset删除变量(函数里面无法删除全局变量,能删除函数里面的局部变量)
isset判断函数是否存在
$name="a";
echo "\n";
function test(){
global $name;
echo $name."\n";
unset($name);
static $a=0; //static 让函数重复执行的时候保留原数。1 2 3,但是$a仍然是局部变量
$a=0;
$a++;
var_dump(isset($a));
echo $a."\n";
}
test();
test();
test();
超级全局变量
die()用于打断后面代码
$GLOBALS返回全局变量
$_SERVER包含头信息、路径、脚本位置、等服务器信息的数组
print_r($GLOBALS); //函数外的变量都是全局变量,都会加到这里面
print_r($_SERVER);//服务器信息。换服务器的时候看看就行
echo $_SERVER["PHP_SELF"];//返回当前文件位置
echo $_SERVER["SERVER_ADDR"];//服务器所在地址
echo $_SERVER["SERVER_NAME"];//服务器域名
echo $_SERVER["REQUEST_METHOD"];//服务器请求方法
echo $_SERVER["REQUEST_TIME"];//请求开始时间戳
echo $_SERVER["QUERY_STRING"];//服务器查询字符串
echo $_SERVER["argv"];//获取请求参数,返回数组,其他都是返回字符串
echo $_SERVER["HTTP_HOST"];//当前页面用户的主机名,就是域名
echo $_SERVER["HTTP_REFERER"];//前一页地址,但是并不可信
echo $_SERVER["REMOTE_ADDR"];//浏览当前页面的用户的IP地址
echo $_SERVER["REMOTE_HOST"];//浏览当前页面的用户的主机名
echo $_SERVER["REMOTE_PORT"];//用户机器上连接到web服务器所使用的端口号
echo $_SERVER["SCRIPT_NAME"];//当前运行的脚本名称
echo $_SERVER["REQUEST_URI"];//当前访问的网址
实战3
编写函数,接收正整数,返回正整数因子
<?php
function getFactors($number){
$arrays=[];
for($i=2;$i<=$number/2;$i++){
if($number% $i === 0 ){
$arrays[]=$i;
}
}
return $arrays;
}
$arr= getFactors(40);
print_r($arr);
?>
数组
- +数组相加,默认不覆盖
- array_merge()默认覆盖
==或者===判断数组是否相同,全等还会有顺序和类型相同- != 和 <> 或者!== ,判断是否不同
5.三元运算符条件?true:false,简写的if else,true部分为空返回条件- ??空合并运算符,如果为null就返回会默认值
7.组合比较符<=>:比较整型,浮点型,字符串,大于返回1,小于返回-1,等于返回0,只会比较值(ASCII码值)
8.输出换行符echo PHP_EOL,只能命令行,不能页面。
9.isset()变量是否被声明(undefined)并且为null,is_null()是否为null,empty()是否为空值(空字符串、0、null、false、array()空数组都返回true)
<?php
$a=[
"m"=>"原神",
"n"=>"崩坏三"
];
$b=[
"m"=>"崩铁",
"n"=>"星琼",
"q"=>[
"cs"=>"测试"
]
];
print_r($b+$a); //按照+前面为准
print_r(array_merge($a,$b));
echo PHP_EOL;
$a=[1,2,3];
$b=[1,2,'3'];
var_dump($a==$b); //true
var_dump($a===$b);//false
$name =$username ?? "是空的"; //返回是空的
echo $name;
echo PHP_EOL;
$a="abc";
$b="12";
echo $a <=> $b; //返回1
echo PHP_EOL;
?>
字符串相关函数’
| 函数 | 功能 |
|---|---|
| strlen | 获取字符串长度 |
| strpos | 查找字符第一次位置或false |
| stripos | 不区分大小写查找位置 |
| strrpos | 返回最后一次出现位置或false |
| stripos | 返回最后一次出现位置,不区分大小写 |
| explode | 字符串打散成数组 |
| implode | 数组拼接成字符串 |
| strtoupper | 转换为大写 |
| strtolower | 转换成小写 |
| ucfirst | 首字母大写 |
| lcfirst | 首字母小写 |
| ucwords | 字符串中每个单词转换为大写 |
str_replace($search,$replace,$string) | 将字符串中某个子字符串替换为另一个字符串 |
| strrev | 字符串反转 |
| trim | 去除字符串两端空格 |
| substr | 截取字符串一部分 |
| mb_substr() | 截取字符串的一部分(中午),需要安装扩展mbstring |

<?php
$str1="我将退坑原神,并加入更好玩的游戏,原神-空月之歌";
$str2="Hello world,Welcome to my world!";
var_dump(strlen($str1)); //70,一个汉字就是3个字符
var_dump(strlen($str2));//32 一个英文一个字符
if(strpos($str1,"原")===false){
echo "不含有";
}else{
var_dump(strpos($str1,"原"));
} //12
//strpos代表找位置,有i代表不区分大小写,有r代表查找最后一个
var_dump(strpos($str1,"原")); //12,返回第一个
var_dump(strrpos($str1,"原")); //51,返回最后一个
var_dump(stripos($str2,"w")); //6,返回第一个,不区分大小写
var_dump(strripos($str2,"w")); //26,返回最后一个,不区分大小写
print_r(explode(",",$str1)); //按照逗号打散
$arr=explode(",",$str1);
print_r(implode("-",$arr)); //连接数组为字符串
echo PHP_EOL;
var_dump(strtoupper($str2)); //全变为大写
var_dump(strtolower($str2)); //全变为小写
var_dump(ucfirst($str2)); //单词首变为大写
var_dump(lcfirst($str2));//单词首变为小写
var_dump(ucwords($str2));//每个单词大写,默认空格分割
print_r(strrev($str2));//字符串返回来,中文会乱码
echo PHP_EOL;
var_dump(substr($str2,2)); //llo world,Wrlcome to my world!
var_dump(substr($str2,2,3)); //llo
var_dump(substr($str2,strpos($str2,"world"),strlen("world"))); //world
var_dump(substr($str1,3,3));
// var_dump(mb_substr($str1,3,2));
?>
<?php var_dump(extension_loaded('mbstring')); ?>
实战四
将字符串中单词首字母变为小写
<?php
//将单词首字母转换为大写,并返回修改后的字符串
$str2="hello world,how are you?";
echo ucwords($str2);
//将单词首字母转换为小写,并返回修改后的字符串
$str ="Hello Yuanshen,How,Are,You?";
function lcwords($string){
//1.用空格打散
$arr=explode(" ",$string);
$newArr=[];
foreach($arr as $value){
//是否存在逗号,存在就再分
if(strpos($value,',') !== false){
$valueArr=explode(",",$value);
$newValueArr=[];
foreach($valueArr as $vv){
$newValueArr[]=lcfirst($vv);
}
$newArr[]=implode(",",$newValueArr);
}else{
//2.首字母转为小写
$newValue=lcfirst($value);
//3.存到数组
$newArr[]=$newValue;
}
}
print_r($newArr);
//4.返回拼接字符串
return implode(' ',$newArr);
}
echo lcwords($str);
echo PHP_EOL;
$test="Hello";
print_r(lcfirst($test));
?>
数组函数
| 名称 | 作用 |
|---|---|
| array() | 创建数组 |
| count | 返回数组数量 |
| array_push( a r r a y , array, array,新元素) | 添加一个或多个元素到结尾 |
| array_unshift | 删除最后一个元素 |
| array_slice() | 从数组中提取一部分元素,组成新的数组 |
| array_merge | 合并一个或多个数组 |
| array_reverse | 反转数组中元素的顺序 |
| in_array | 检查数组中是否存在某个值 |
| array_key_exists | 检查数组中是否存在某个键 |
| arrray_keys | 返回数组中的所有键,组成新数组 |
| arrary_values | 返回所有值,组成新数组 |
| array_search() | 根据值返回键 |
| array_unique() | 移除数组中的重复值 |
| max() | 最大值 |
| min() | 最小值 |
| sort() | 排序,升序 |
| rsort | 降序 |
| array_sum | 求和 |
| array_product() | 乘积 |
<?php
$array=["a","b","c","d","e"];
$array[]=["5"];
print_r($array);
var_dump(count($array)); //返回数组个数
array_push($array,"6"); //在数组最后面插入
var_dump($array);
array_push($array,"6","7","8","9");
var_dump($array);
array_unshift($array,"6"); //在数组最前面插入
print_r($array);
$array2=array_merge($array,["c"=>6]); //两个数组合并并返回新数组
print_r($array2);
array_pop($array2); //删除最后一个元素
print_r($array2);
array_shift($array2);//删除第一个元素
print_r($array2);
$array3=array_slice($array2,3,6,true);//提取一部分元素,组成新数组,从索引为2的开始,取6个元素,true代表保留原来索引
print_r($array3);
$array4=array_slice($array2,-1);//取最后一个
print_r($array4);
print_r(array_reverse($array3));//反转数组
var_dump(in_array(7,$array3)); //值是否在数组中存在
var_dump(array_key_exists(1,$array3)); //键是否在数组中存在
var_dump(array_keys($array,"1",true));//返回所有键
var_dump(array_keys($array,"6",true));//返回所有是6的键,严格查找
var_dump(array_keys($array,6,true));//返回所有是数值6的键,雅阁查找
var_dump(array_values($array));//返回所有值
var_dump(array_search("c",$array)); //搜索值,返回键
$unique_array=array_unique($array);//移除重复值
var_dump($unique_array);
var_dump(min($array)); //最小值
var_dump(max($array)); //最大值
var_dump(sort($array)); //返回排序是否成功
print_r($array); //排序成功
print_r(array_sum($array)); //求和
print_r(array_product($array)); //求乘积
?>
实战5
给一个数组,返回数组的元素个数、总和、平均值、最大最小值、排序数组
<?php
$numbers=[5,9,3,2,7,1,6];
function testArray($numbers){
$arr=array();
$arr["count"]=count($numbers);
$arr["sum"]=array_sum($numbers);
$arr["average"]=round($arr["sum"]/$arr["count"],2);//round保留两位小数,number_format也可以
$arr["max"]=max($numbers);
$arr["min"]=min($numbers);
sort($numbers);
$arr["sorted"]=$numbers;
return $arr;
}
print_r(testArray($numbers));
?>
日期时间函数
| 函数 | 作用 |
|---|---|
| time() | 获取当前时间戳 |
| microtime(true) | 返回浮点数时间戳,true代表更精细浮点echo round(micritime(true)*1000) |
| date(格式,时间戳) | 日期格式化,时间戳只支持秒级的echo date(“Y-m-d H:i:s”,time()) |
| strtotime(string) | 字符串转为时间echo strtotime("next Monday"); |
mktime($hour,$minute,$second,$month,$day,$year) | 生成时间戳 |
| date_create() | 创建日期时间对象,可以使用get方法获取对象参数 |
| date_format() | 创建日期时间对象,参数必须是日期对象 |
| date_diff() | 计算两个日期之间的差 |
strftime($format,$timestamp) | 根据指定的格式,将时间戳格式化为可读的日期和时间字符串,支持本地化的日期和时间格式,php8废弃 |
| gmdate($format) | 按照GMT时间戳,date是本地时间为基准 |
| date_default_timezone_set($timezone) | 设置时区为Asia/Shanghai |
| timezone_identifiers_list() | 获取所有时区列表 |
<?php
echo time();
echo PHP_EOL;
echo microtime(true);
echo PHP_EOL;
echo round(microtime(true)*1000);
echo PHP_EOL;
echo date("Y-m-d",time());
echo PHP_EOL;
echo date("Y-m-d H:i:s",microtime(true));
echo PHP_EOL;
echo strtotime("2025-03-27");
echo strtotime("next Monday");
echo strtotime("next Monday",time());//根据base往后加,默认base为time()
$time = strtotime("+2 days",time()); //加两天
echo date("Y-m-d H:i:s",$time);
$time = strtotime("+2 hours",time()); //加两小时
echo date("Y-m-d H:i:s",$time);
$time = strtotime("-2 hours",time()); //减两小时
echo date("Y-m-d H:i:s",$time);
$hour=12;
$minute=9;
$second=12;
$month=2;
$day=5;
$year=2025;
echo PHP_EOL;
$mktime_date= date("Y-m-d H:i:s",mktime($hour,$minute,$second,$month,$day,$year));//mktime生成时间戳
echo $mktime_date;
echo PHP_EOL;
$day=date_create($mktime_date);//创建日期时间对象
var_dump($day); //输出对象,有date、timezone_type、timezone的参数
var_dump($day->getTimezone()); //获取时区,出现timezone_type和timezone参数
echo date_format($day,"Y/m/d H时i分s秒"); //日期格式化,$day必须是一个对象参数
$date1=date_create($mktime_date);//创建日期时间对象
$date2=date_create(date("Y/m/d H:i:s",strtotime("+2 hours",time())));
$diff=date_diff($date1,$date2); //相减,获取对象
echo PHP_EOL;
//%Y完整年份差异,%y两位数差异,%m月份差异,%h12小时制,%H小时差异,
var_dump($diff->format('相差%a天,%d天,%Y年,%m月,%H小时,%I分钟,%S秒,%R正负符号')); //%d时天相减,%a是总天数相减,R和r显示正负,r必须是负的才会显示
echo PHP_EOL;
echo strftime("%A %Y/%m/%d %H:%M:%S",time()); //%A星期 %m月份,%M分钟 %S秒
echo PHP_EOL;
echo gmdate("Y-m-d H:m:s");//少8小时
echo PHP_EOL;
echo date("Y-m-d H:m:s");//差8小时
echo PHP_EOL;
date_default_timezone_get();
date_default_timezone_set("UTC");//UTC会一致,都是gmdate日期,localtime和Asia/Shanghai都是不一致。
//以上时间一致
echo gmdate("Y-m-d H:m:s");//少8小时
echo PHP_EOL;
echo date("Y-m-d H:m:s");//差8小时
print_r(timezone_identifiers_list());
//datetime对象
$datetime=new DateTime(date())
?>
180

被折叠的 条评论
为什么被折叠?



