PHP基础知识学习笔记

197次阅读
没有评论

共计 4217 个字符,预计需要花费 11 分钟才能阅读完成。

官网

PHP 官网:https://www.php.net/

文档下载:https://www.php.net/distributions/manual/php_enhanced_zh.chm

echo 和 print

  • echo 能够输出一个以上的字符串,逗号隔开
  • print 只能输出一个字符串,并始终返回 1
  • echo 比 print 稍快,并且开销低

CLI

PHP CLI 是 PHP 语言的命令行解释器。

<?php
echo '请输入内容:';
$input = fgets(STDIN);
echo '输入内容是:' . $input;

执行脚本:php test.php

交互式 Shell

$ php -a
Interactive shell

php > echo PHP_OS;
WINNT
php > echo PHP_VERSION;
7.3.4

数据类型

var_dump($a); 会返回变量的数据类型和值,一般开发调试时使用,只获取数据类型用echo gettype($a);

字符串

<?php
$s = 'abc';
echo '$s'; //$s
echo "$s"; //abc
echo "hello $s 123"; //hello abc 123
echo "hello {$s} 123"; //hello abc 123

Resource 资源类型

<?php
$handle = fopen('test.txt', 'r');
var_dump($handle); //resource(5) of type (stream)
echo is_resource($handle); //1
echo gettype($handle); //resource
echo get_resource_type($handle); //stream

$content = fread($handle, filesize('test.txt'));
echo $content;

fclose($handle);

EOF(heredoc)定界符

以 <<<EOF 标记开始,以 EOF 标记结束,结束标记必须顶头写,独占一行,不能有缩进和空格,结束标记末尾要有分号。

位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。

<?php
$a = '123';
echo <<<EOF
ABC$a abc'd"ef
EOF;

运算符

算术运算符

<?php
// 整除,参数必须是整数,向下取整,结果 3
$a = intdiv(10, 3);
echo $a;

比较运算符

and 和 &&,or 和 || 的区别主要体现在优先级:&& 的优先级比 and 高,|| 的优先级比 or 高。

空合并运算符

PHP 7 新特性,用于简化处理可能为 null 的变量或数组元素的情况。它的作用是判断一个变量是否未定义或者为 null,是则返回指定的默认值,否则返回该变量的值。

<?php
$name = $username ?? '我是默认值';
echo $name; // 我是默认值

组合比较符

是一个三向比较运算符,它可以执行两个操作数之间的大于,小于和相等的比较。

<?php
$a = 1;
$b = 2;
$c = $a <=> $b;
echo $c; // -1

如果 $a>$b 则 $c=1;如果 $a==$b 则 $c=0;如果 $a<$b 则 $c=-1。

常量

常量被定义后,在脚本的其他任何地方都不能被改变,严格区分大小写,但无需 $ 符。

<?php
define('PI', 3.14); // 第一种定义
const PI2 = 3.14; // 第二种定义
echo PI;
echo PHP_EOL;
echo PI2;

const 和 define 的区别:

  • const 不能在条件语句中定义常量
  • const 可在类中使用,define 不能

获取所有常量:

<?php
define('PI', 3.14);
$a = get_defined_constants(true); // 获取所有常量
print_r($a);
print_r($a['user']);

魔术常量

它的值随着它在代码中的位置改变而改变。

  • __LINE__:获取文件中的当前行号
  • __FILE__:获取文件的完整路径和文件名
  • __DIR__:获取文件所在目录
  • __FUNCTION__:获取函数被定义时的名称
  • __CLASS__:获取类被定义时的名称
  • __METHOD__:包含了:命名空间 类名 方法名
  • __NAMESPACE__:当前命名空间的名称
  • __TRAIT__:当前使用的 Trait 名称
  • PHP_EOL:即\n

变量

unset()函数用于销毁给定的变量。

<?php
$a = 1;
unset($a);
var_dump($a); // NULL

在函数中不能 unset()全局变量,想在函数中 unset()全局变量,可使用 $GLOBALS 数组来实现:

<?php
$a = 1;
function test() {unset($GLOBALS['a']);
}
test();
var_dump($a); // NULL

isset()函数用于判断变量是否被定义并且非 NULL。

empty()函数对于未定义的变量也会返回 true,因此在使用该函数之前,应该确保变量已经被定义。

超全局变量

$GLOBALS 是一个包含全部变量的全局组合数组,变量的名字就是数组的键。

$_SERVER 是一个包含诸如头信息 (header)、路径(path)、以及脚本位置(script locations) 等信息的数组。

$_REQUEST 变量包含了 $_GET、$_POST 和 $_COOKIE 的内容。

可变变量

<?php
$a = 'test';
$$a = 'test2'; // 即 $test
$$$a = 'test3';
echo $a;
echo PHP_EOL;
echo $test; // test2
echo PHP_EOL;
echo $test2; // test3

传址

<?php
$a = 1;
$b = &$a;
$b = 2;
echo $a; //2
echo $b; //2

数组

索引数组

<?php
$arr = ['a', 'b', 'c'];
print_r($arr);
print_r($arr[1]);

关联数组

<?php
$age = ['张三' => 18, '李四' => 19, '王五' => 20];
print_r($age);
print_r($age['张三']);
// 获取数组长度
echo PHP_EOL . count($age);

遍历数组

<?php
$age = ['张三' => 18, '李四' => 19, '王五' => 20];

foreach ($age as $value) {echo $value . PHP_EOL;}

foreach ($age as $key => $value) {echo $key . ':' . $value . PHP_EOL;}

list()

<?php
$arr = ['a', 'b', 'c'];
list($a,, $c) = $arr;
echo $a; //a
echo $c; //c

$arr2 = ['a' => 'a2', 'b' => 'b2', 'c' => 'c2'];
list('a' => $a2, 'c' => $c2) = $arr2;
echo $a2; //a2
echo $c2; //c2

数组运算符

只会保留第一个数组中的键值对,而忽略后面数组中相同键名的元素,如果想要合并两个数组并覆盖相同键名的元素,可以使用 array_merge()函数。

<?php
$arr = ['a' => 1, 'b' => 2];
$arr2 = ['b' => 'b', 'c' => 3, 'd' => 4];
print_r($arr + $arr2);
print_r($arr2 + $arr);
print_r(array_merge($arr, $arr2));

通过指针读取数组元素

<?php
$arr = ['a', 'b', 'c'];
echo current($arr); //a
echo key($arr); // 数组下标 0
echo next($arr); //b
echo prev($arr); //a

函数

<?php
function nowTime($type = 'time') {if ($type == 'time') {echo date('Y-m-d H:i:s');
    } else if ($type == 'day') {echo date('Y-m-d');
    }
}

nowTime();

严格模式

<?php
// 开启严格模式
declare(strict_types=1);
function plus(int $a, int $b) {echo $a + $b;}

plus(2, 3);
// plus('2', 3);

变量作用域

函数内部声明的变量是局部变量,仅能在函数内部访问;函数外部声明的变量是全局变量,除了函数外,可以被脚本中的任何部分访问,要在一个函数中访问全局变量,需要使用 global 关键字。

<?php
$a = 123;
function test() {
    global $a;
    echo $a;
}

test();

static 作用域

当一个函数完成时,它的所有变量通常都会被删除。若想某个局部变量不要被删除,可在第一次声明变量时使用 static 关键字。

每次调用该函数时,该变量将会保留着函数前一次被调用时的值,但是该变量仍然是函数的局部变量。

<?php
function test() {
    static $a = 0;
    echo $a . PHP_EOL;
    $a++;
}

test(); // 0
test(); // 1
test(); // 2

函数所有参数

<?php
function test() {$args = func_get_args();
    $numArgs = func_num_args();
    print_r($args);
    print_r($numArgs);
}
test(1, 2, 3);

htmlspecialchars()函数

用于将字符串中的特殊字符转换为 HTML 实体,以避免在 HTML 文档中引起解析错误或安全漏洞。

包含文件

include 和 require 语句

include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的。

  • require 生成一个致命错误 (E_COMPILE_ERROR),在错误发生后脚本会停止执行
  • include 生成一个警告 (E_WARNING),在错误发生后脚本会继续执行

include_once 和 require_once 语句

和上面的一样,但只会调用一次,防止重复调用。

at 符 @

include 前加 at 符 @可用于屏蔽错误信息。

GET 和 POST

GET 传输的最大容量通常不超过 2048 个字符(即 2KB),POST 对发送信息的量没有限制 (默认 POST 发送的最大值为 8 MB,但可通过设置 php.ini 的 post_max_size 进行更改;发送的变量数最大值 max_input_vars)。

正文完
 0
阿伯手记
版权声明:本站原创文章,由 阿伯手记 于2023-11-10发表,共计4217字。
转载说明:本站原创内容,除特殊说明外,均基于 CC BY-NC-SA 4.0 协议发布,转载须注明出处与链接。
评论(没有评论)
验证码

阿伯手记

阿伯手记
阿伯手记
喜欢编程,头发渐稀;成长路上,宝藏满地
文章数
766
评论数
204
阅读量
445747
今日一言
-「
热门文章
职场救急!AI请假话术生成器:1秒定制高通过率理由

职场救急!AI请假话术生成器:1秒定制高通过率理由

超级借口 不好开口?借口交给我!智能生成工作请假、上学请假、饭局爽约、约会拒绝、邀约推辞、万能借口等各种借口理...
夸克网盘快传助手提高非VIP下载速度

夸克网盘快传助手提高非VIP下载速度

夸克网盘限速这个大家都知道,不开会员差不多限速在几百 K。那有没有办法在合法合规途径加速下载夸克网盘呢?这里推...
国内已部署DeepSeek模型第三方列表 免费满血版联网搜索

国内已部署DeepSeek模型第三方列表 免费满血版联网搜索

本文收集了目前国内已部署 DeepSeek 模型的第三方列表,个个都是免费不限次数的满血版 DeepSeek,...
巴别英语:用美剧和TED演讲轻松提升英语听力与口语

巴别英语:用美剧和TED演讲轻松提升英语听力与口语

还在为枯燥的英语学习而烦恼吗?巴别英语通过创新的美剧学习模式,让英语学习变得生动有趣。平台提供海量美剧和 TE...
Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 是一款在线中文姓名生成器,可在几秒内生成符合个人需求的中文名字。...
TVAPP:开源电视盒子资源库,一键打造家庭影院

TVAPP:开源电视盒子资源库,一键打造家庭影院

导语 TVAPP 是一个专为 Android TV 电视盒子用户打造的开源影音资源库,集成了影视、直播、游戏等...
2025年12月 每日精选

2025年12月 每日精选

关于每日精选栏目 发现一些不错的资源,点击 这里 快速投稿。 12 月 26 日 .ax 顶级域 目前全球唯一...
最新评论
15220202929 15220202929 怎么用
八对 八对 麻烦大佬更新下【堆新】的友链站名:八对星星描述:极目星视穹苍无界•足履行者大地有疆链接:https://8dui.com图标:https://cf.8dui.com/logo.webp横标:https://cf.8dui.com/logo-w.webp订阅:https://8dui.com/rss.xml
三毛笔记 三毛笔记 已添加
DUINEW DUINEW 已添加贵站,期待贵站友链~博客名称:堆新博客地址:https://duinew.com/博客描述:堆新堆新,引力向新!——堆新(DUINEW)博客头像:https://d.duinew.com/logo.webp横版头像:https://d.duinew.com/logo-w.webp博客订阅:https://duinew.com/rss.xml
hedp hedp 没看懂
bingo bingo 直接生成就可以啦,也可以添加一些选项
满心 满心 申请更新下友联信息,原名:满心记,现名:周天记原域名:qq.mba,现域名:zhoutian.com描述:我在人间混日子
开业吉日 开业吉日 没看明白这个怎么用
开业吉日 开业吉日 beddystories 这个网站太赞了,收藏
热评文章
夸克网盘快传助手提高非VIP下载速度

夸克网盘快传助手提高非VIP下载速度

夸克网盘限速这个大家都知道,不开会员差不多限速在几百 K。那有没有办法在合法合规途径加速下载夸克网盘呢?这里推...
清华大学官方免费DeepSeek教程

清华大学官方免费DeepSeek教程

AI 领域近期最引人注目的焦点当属 DeepSeek,这款由中国创新企业深度求索研发的人工智能工具,正以开放源...
Short-Link 免费开源短网址程序,基于Fastify、Vercel和Supabase构建

Short-Link 免费开源短网址程序,基于Fastify、Vercel和Supabase构建

Short-Link 是一款基于 Fastify、Vercel 和 Supabase 构建的 URL 缩短服务...
国内已部署DeepSeek模型第三方列表 免费满血版联网搜索

国内已部署DeepSeek模型第三方列表 免费满血版联网搜索

本文收集了目前国内已部署 DeepSeek 模型的第三方列表,个个都是免费不限次数的满血版 DeepSeek,...
Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 在线中文姓名生成器

Chinese Name Generator 是一款在线中文姓名生成器,可在几秒内生成符合个人需求的中文名字。...
BeddyStories 完全免费儿童睡前故事库,让孩子随时随地入睡更轻松

BeddyStories 完全免费儿童睡前故事库,让孩子随时随地入睡更轻松

BeddyStories 是一个致力于为儿童提供优质睡前故事的在线平台,用户可以在这里找到来自世界各地的经典故...
DrawLink:一键生成链接视觉卡片,提升分享点击率

DrawLink:一键生成链接视觉卡片,提升分享点击率

小贴士 :此站或已变迁,但探索不止步。我们已为您备好「类似网站」精选合集,相信其中的发现同样能为您带来惊喜。