IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> PHP的基本语法 -> 正文阅读

[PHP知识库]PHP的基本语法

一、编写和运行PHP程序

  • 第一步:使用文本编辑器(也可以是其它编辑代码的软件,如VSCode),创建一个包含源代码的磁盘文件,扩展名一定要是“.php”;
  • 第二步:将文件上传至Web服务器,也就是将文件保存在wamp集成环境下的…\www\目录中;
  • 第三步:通过浏览器访问Web服务器运行程序,即在浏览器地址栏中输入http://localhost/文件名.php。
  • 测试代码
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8"/>
		<title>第一个PHP程序(获取服务器信息)</title>
	</head>
	<body>
<?php
	header('Content-type:text/html;charset=utf-8');
	$sysos = $_SERVER["SERVER_SOFTWARE"];		// 获取服务器标识的字符串
	$sysversion = PHP_VERSION;				// 获取PHP服务器版本

	// 以下两条代码连接MySQL数据库并获取数据库的版本信息
	$con = mysqli_connect("localhost", "root", "");
	$mysqlinfo = mysqli_get_server_info($con);

	// 从服务器中获得GD信息
	$gd = gd_info();
	$gdinfo = $gd['GD Version'];
	// 从GD库查看是否支持FreeType字体
	$freetype = $gd["FreeType Support"] ? "支持" : "不支持";

	// 从PHP配置文件中获得是否可以获取远程文件
	$allowurl = ini_get("allow_url_fopen") ? "支持" : "不支持";
	// 从PHP配置文件中获得最大上传限制
	$max_upload = ini_get("file_uploads") ? ini_get("upload_max_filesize") : "Disabled";
	
	// 从PHP配置文件中获得脚本的最大执行时间
	$max_ex_time = ini_get("max_execution_time")."秒";

	// 以下两条获取服务器时间,中国采用的是东八区的时间,设置时区写出Etc/GMT-8
	date_default_timezone_set("Etc/GMT-8");
	$systemtime = date("Y-m-d H:i:s",time());

	/*以HTML表格形式输出以上获取到的信息*/
	echo "<table align=center cellspacing=0 cellpadding=0>";
	echo "<caption><h2>系统信息</h2></caption>";
	echo "<tr><td>Web服务器:	</td>	<td>$sysos		</td></tr>";
	echo "<tr><td>PHP版本:		</td>	<td>$sysversion	</td></tr>";
	echo "<tr><td>MySQL版本:	</td>	<td>$mysqlinfo	</td></tr>";
	echo "<tr><td>GD库版本:	</td>	<td>$gdinfo		</td></tr>";
	echo "<tr><td>FreeType:	</td>	<td>$freetype	</td></tr>";
	echo "<tr><td>远程文件获取:</td>	<td>$allowurl	</td></tr>";
	echo "<tr><td>最大上传限制:</td>	<td>$max_upload	</td></tr>";
	echo "<tr><td>最大执行时间:</td>	<td>$max_ex_time</td></tr>";
	echo "<tr><td>服务器时间:	</td>	<td>$systemtime	</td></tr>";
	echo "</table>";
?>
	</body>
</html>

二、变量的申明和应用

1.变量的申明

  • 在PHP中变量的声明必须使用一个美元符号**“$”**后跟变量名来表示,使用赋值操作符(=)给一个变量赋值;
  • 大部分的PHP变量如果不是在函数里面声明的,则只能在声明处草文件结束的一个单独的范围内使用。这个单独的范围跨度可以是开始标记到结束标记之间;可以是一个页面开启的所有PHP模式里面;可以是include和required引入的文件;可以是使用了Cookie或Session的多个页面;
  • 在函数使用范围内:unset()函数释放指定变量;isset()函数检测变量是否设置;empty()函数检测一个变量是否为空
  • 实例代码:
<?php
	$var = '';	// 声明一个变量$var赋予一个空值
	if(empty($var)){	// 结果为true,因为$var为空
	echo "$var is either 0 or not set at all";
}
	if(!isset($var)){	// 结果为false,因为$var已设置
	echo "$var is not set at all";
}
	unset($var);	// 在内存中释放变量$var
	if(isset($var)){	// 结果为false,前面已经释放了变量$var,$var已经不存在
	echo "This var is set so I will print";
}

2.变量的命名

  • 变量名是严格区分大小写的,但内置结构和关键字及用户自定义的类名和函数名是不区分大小写的。
  • 实例代码:
<?php
	// 严格区分大小写的变量名
	$name = "tarzan";	// 使用全部小写字母定义变量
	$Name = "skygao";	// 使用手写字母大写定义变量
	$NAME = "tom";		// 使用全部大写字母定义变量
	echo $name;			// 输出 tarzan
	echo $Name;			// 输出 skygao
	echo $NAME;			// 输出 tom


//内置结构和关键字等不严格区分大写写的情况
	echo "this is a test";	// 使用全部小写的echo
	Echo "this is a test";	// 使用首字母大写的Echo
	ECHO "this is a test";	// 使用全部大写的ECHO
	phpinfo();				// 使用全部小写字母调用phpinfo()函数
	Phpinfo();				// 使用首字母大写调用Phpinfo()函数
	PhpInfo();				// 使用每个单词都首字母大写调用PhpInfo()函数
	PHPINFO();				// 使用全部大写字母调用PHPINFO()函数
  • 变量名不能以数字开头,必须以字母或者下划线开头,后面可以跟任意数量的数字、字母和下划线,且中间不能使用空格;PHP的变量名中还可以含有中文;
  • 实例代码:
<?php
	$var = 'Bob';
	$Var = 'Joe';
	echo "$var,$Var";

	$4site = 'not yet';		// 以数字开头的非法变量名
	$_4site = 'not yet';	// 以下划线开头的合法变量名
	$i站点is = 'not yet';	// 以字母开头,且其中包含中文的合法变量名
  • PHP中系统定义的标识符即关键字,不能作为常量名、函数名和类名使用;但是可以作为变量名使用;不过为了避免混淆,最好不要是关键字作为变量名。
  • 如果变量是由多个单词构成的,则第一个单词采用全部小写字母,以后每个单词首字母采用大写的风格,例如$myNewVariable。

3.可变变量

  • 可变变量就是获取一个普通变量的值作为该可变变量的变量名
  • 实例代码:
<?php
	$hi = "hello";		// 声明一个普通变量$hi,值为hello
	$$hi = "world";		// 声明一个可变变量$$hi,$hi的值是hello,即相当于声明$hello的值为world
	echo "$hi $hello";	// 输出 hello world
	echo "$hi $($hi)";	// 输出 hello world

4.变量的引用赋值

  • 一般情况下我们使用的都是传值赋值,使用这种赋值方法,当一个变量的值赋予另一个变量时,改变其中一个变量的值,将不会影响到另一个变量;
  • 引用赋值,使用这种赋值方法意味着新的变量引用了原始变量,改动其一都会影响另一方,这个过程中省略了复制操作,所有这种赋值方法效率更高;
  • 实例代码:
<?php
	$foo = 'Bob';	// 将字符串'Bob'赋值给$foo
	$bar = &$foo;	// 将遍历$foo的引用赋值给变量$foo
	$bar = "My name is Tom";	// 改变变量$bar的值
	echo "$bar";	// 输出My name is Tom
	echo "$foo";	// 同样输出My name is Tom
	$foo = "Your name is Jack";		// 改变变量$foo的值
	echo "$foo";	// 输出为Your name is Jack
	echo "$bar";	// 同样输出为Your name is Jack
  • 还有一个很重要的点就是,只有有名字的变量才能赋值;且unset()函数释放其中一个,不会影响另一方,例如释放了上方 f o o , foo, foobar不会收影响,只是互相取消值的关联。

三、PHP变量的数据类型

PHP支持8中原始类型,还有一些伪类型,如mixed、number和callback。

1.四种标量类型

1. 布尔型(boolen)
一般情况下,布尔型的值就是FALSE和TRUE,但是当运算符、函数或者流程控制需要一个布尔型参数时,任何类型的值都可以自动转化为布尔型的值。关于自动转换为布尔型的值,以下值被认为是FALSE,其他都被认为是TURE:

  • 布尔值FALSE;
  • 整型值0位假,是FALSE,-1和其他非零值都被认为是TRUE;
  • 浮点型0.0;
  • 空白字符串和字符串"0";
  • 没有成员变量的数组,即空数组
  • 没有单元的对象(仅使用于PHP4)
  • 特殊类型NULL

2. 整型(integer)

  • 十进制:$int = 123;
  • 二进制:$int = 0b123(数字前面加上0b);
  • 八进制:$int = 0123(数字前面加上0);
  • 十六进制:$int = 0x123(数字前面加上0x);
  • 对于32位系统的取值范围为:2 147 483 647 ~ -2 147 483 648,PHP不支持无符号整数不能将整数都变成整数,也不能将最大值翻一翻,超过最大值将会从整型变为浮点类型
  • 对于64位系统的取值范围为:大约为9E18即9乘以10的18次方,最小值大约为最大值的相反数即-9E18;
  • 系统常量PHP_INT_SIZE代表integer型的字长,就是一个integer型变量占用的字节数;
  • 系统常量PHP_INT_MAX代表整型的最大值;
  • 系统常量PHP_INT_MIN代表整型的最小值。

3. 浮点型(float,也称double)

  • double和float是相同的,两个名称同时存在,通常用来表示整型无法表示的数据,如金钱值、距离值和速度值等;
  • 取值范围为1.7E-38~1.7E+38,精确到小数点后15位;
  • 浮点数只是一种近似值,永远不要相信浮点数精确到了最后一位,也不要尝试比较两个浮点数是否相等。

4. 字符串(string)
(1)单引号字符串

  • 单引号字符串中不能再包括单引号,如果要使用单引号就要就行转义’(反斜杠+单引号);
  • 但引号字符串中只能转义单引号本身和反斜杠(转义字符)本身;
  • 单引号不能解析变量,会将变量名原样输出;
  • 定义简单字符串时,单引号效率更高,没有特殊要求,应使用单引号定义字符串。

(2)双引号字符串

  • 双引号可以解析变量名、数组值和对象属性的方法;
  • 遇到$符号,解析器会尽可能多地取得后面的字符以组成一个合法的变量名;
  • 可以使用花括号把变量名括起来,方便解析。

(3)定界符

  • 定界符(<<<)语法字符串,在“<<<”之后提供一个标识符开始,然后就是包含的字符串,最后一同样的标识符结束;
  • 结束标识符必须从行的第一列开始,后面除了分号不能包含其它任何字符,空格和空格制表符都不行;
  • 标识符和变量名的定义一样,不能由数组开头,且只能包含数字、字母和下划线。
  • 定界符除了不笨初始化类成员,表现得和双引号字符串功能一样;界定符中变量也能被解析,通常用来输出文件和数据库中大段的文档;
  • 可以为开始标识符加上单引号或者双引号,加上什么引号其功能就与其类型的字符串功能相似;
  • 双引号和定界符字符串,支持使用“\u{xxxxx}”来解析Unicode字符

(4)实例代码

<?php
	header('Content-type:text/html;charset=utf-8');
	// 字符串类型
	// 1、单引号字符串
	// 单引号引起了的简单字符串
	echo 'this is a simple string';	// this is a simple string
	echo '<br/>';
	// 包含转义字符的单引号字符串
	echo 'this is a \'simple\' string';	// this is a 'simple' string
	echo '<br/>';
	// 单引号只能转义转义字符本身(\)和单引号(')
	echo 'this \n is \r a \t \'simple\' string \\';	// this \n is \r a \t 'simple' string \
	echo '<br/>';
	// 单引号字符串不会解析变量名,变量名将原样输出
	
	$string = 'this';
	echo '$string is a simple string';	// $string is a simple string
	echo "<br/><br/><br/>";

	// 2、双引号字符串
	// 双引号字符串内部可以解析变量名、数组值、对象方法以及各种转义字符
	$beer = 'Jack';
	echo "$beer is a bad boy";	// Jack is a bad boy
	echo "<br/>";
	// "s"接在原有变量名后是生效的,所以判定位没有$beers这个变量
	//echo "$beers is a bad boy";	// 报错
	//echo "<br/>";

	// 使用{}可以将遍历分离出来解析
	echo "${beer}s is a bad boy";	// Jacks is a bad boy
	echo "<br/>";
	echo "{$beer}s is a bad boy";	// Jacks is a bad boy
	echo "<br/>";

	// 3、定界符字符串
	// 以标识符EOT开始和以标识符EOT结束定义的一个字符串,当然也可以使用其他合法的标识符
	$string0=<<<EOT
	这里是包含在定界符中的字符串,指出了定界符的一些使用时的注意事项。
	很重要的一点必须指出,结束标识符EOT所在的行不能包含任何其他字符。这意味着该标识符
	不能被缩进,而且在结束标记的分号之前和之后都不能有任何空格或制表符。
	同样重要的是,要意识到在结束标识符之前的第一个字符必须是你的操作系统中定义的换行符。
	如果破坏了这条规则使得结束标识符不“干净”,则它不会被视为结束标识符,PHP将继续寻找下去。
	如果在这种情况下找不到合适的结束标识符,将会导致一个语法错误。
EOT;

	echo $string0;
	echo "<br/>";

	// 定界符内除不能初始化类成员其它的功能基本和双引号一样,且可以直接使用单双引号
	$name = 'Jack';
	$string00=<<<EOT
	My name is $name. I am printing a "string" \n.
	\tnow, I am printing some new line \n \r.
	\tThis should print a capital 'A'.
EOT;
	
	echo $string00;
	echo "<br/>";

	// 为定界符的开始标识符加上双引号就和双引号功能一样,加上单引号就和单引号一样
	$name1 = 'Tom';

	$line1=<<<'EOT'
	"$name1" is a good boy. \n I get grade:\x41
EOT;
	
	$line2=<<<"EOT"
	"$name1" is a good boy. \n I get grade: \x41
EOT;
	echo $line1;
	echo "<br/>";
	echo $line2;
	echo "<br/>";

	// 在PHP7中可以在双引号和定界符字符串中,支持使用“\u{xxxxx}”来解析Unicode字符
	echo "\u{4f5c} \u{8005} \u{5f88} \u{5e05}";		// 作 者 很 帅

2.两种复合类型

  • 数组(array)
  • 数组可以存放多个数据,且可以是任何类型;实际上数组相当于一张有序图,把values映射到keys的类型,此类型在很多方面进行了优化,可以把它当成真正的数组或者列表(矢量)、散列表(图的一种实现)、字典、集合、栈、队列来使用,以及更多的可能性。用array()语言结构来新建一个array,它接受一定数量的用逗号分科的key=>value参数对;
  • 实例代码:
<?php
	/*
	array(
	key1 => value1,
	key2 => value2,
	...
	)
	key可以是整型或字符型,value可以是任何类型
	*/
	$arr = array("foo" => "bar", 12 => true);
	print_r($arr);		// 查看数值中的全部内容
	echo $arr["foo"];	// 通过数组下标访问单个数据
	echo $arr[12];		// 通过数组下标访问单个数据
  • 对象(object)
  • 对象是一种比数组更高级的复合数据类型,一个对象变量由一组方法和一组属性值构成,方法表明对象的功能,属性表明对象的状态;初始化对象的方法,用new语句将对象实例化到一个变量中;
  • 实例代码:
<?php
	class Person{		// 定义一个类
		var $name;		// 在类中定义一个成员属性
		function say(){	// 定义一个成员方法
			echo "Doing foo.";
		}
	}
	$p = new Person;	// 使用new语句实例化类Person的对象放在变量$p中
	$p->name = "Tom";	// 通过对象$p访问对象中的成员属性
	$p->say();			// 通过对象$P访问对象中的成员方法

3.两种特殊类型

  • 资源(resource)
  • 资源是一种特殊的变量,保存了到外部资源的一个引用;使用的资源类型变量包含:打开的文件、数据库连接、图形画布区域等的特殊句柄,有程序员创建和回收;
  • 实例代码
<?php

	// 资源类型
	// 使用fopen()函数以写的方式打开当前目录下的info.txt文件,将返回的文件资源赋值给$file_handle
	$file_handle = fopen("info.txt","w");
	var_dump($file_handle);	// resource(3, stream)
	fclose($file_handle);

	// 使用opendir()函数打开Windows系统下的C:\\WINDOWS\\Fonts目录,返回目录资源
	$dir_handle = opendir("C:\\WINDOWS\\Fonts");
	var_dump($dir_handle);	// resource(4, stream)

	// 使用mysqli_connect()函数连接MySQL管理系统,返回MySQL的连接资源
	$link_mysql = mysqli_connect("localhost", "root", "");
	var_dump($link_mysql);	// 返回来很多内容

	// 使用imagecreate()函数创建一个100*50像素的画板,返回图像资源
	$im_handle = imagecreate(100,50);
	var_dump($im_handle);	// resource(6, gd)

	// 使用xml_parser_create()函数返回XML解析器资源
	$xml_parser = xml_parser_create();
	var_dump($xml_parser);	// resource(7, xml)
  • NULL
  • 特殊的NULL表示一个变量没有值,NULL类型唯一可能的值就是NULL。NULL不表示空格,不表示0,也不表示空字符串,而是表示一个变量的值为空,NULL不是空值,就是值为空;但不是空值,空值也是一种存在的值,而NULL表示值不存在;
  • NULL不区分大小写,变量为NULL值的有:将变量直接赋值为NULL;声明的变量没有被赋值;被unset()函数销毁的变量;
  • 实例代码:
<?php

	// NULL类型

	$a = NULL;
	$b = "value";
	unset($b);	// 释放$b

	var_dump($a);	// null
	var_dump($b);	// null,给出一个notice
	var_dump($c);	// null,给出一个notice

四、常量的声明与应用

常量是一个简单值的标识符,在脚本执行期间一个常量一旦被定义,就不能再改变或是取消定义,且常量的作用域是全局的,可以在脚本的任何地方声明和访问常量;常量只能是标量数据类型;

1.常量的定义和使用

  • 第一种常量定义方法:使用define()函数定义;常量的定义不需要加$符号,且名称总是要大写;
  • 第二种常量定义方法:使用const关键字(5.3.0版本后)
  • 实例代码:
<?php
	// 常量
	// 常量的定义和使用
	// 定义方法1:define()函数
	define("CON_INT", 100);
	echo CON_INT;
	// 将此常量的使用定义为可以不区分大小写
	define("GREETING", "hello world", true);	// 对此此种用法,系统会给出不推荐使用的提醒
	echo GREETING;
	echo Greeting;
	echo "<br/>";
	// 定义方法2:const关键字定义
	const FOO = 'BAR';
	for($i = 0; $i <32 ; ++$i){
		define('YDMA_'.$i, 1 + $i);
	}

	echo YDMA_16;

	// const不能在条件语句中定义常量
	/*
	if(true){
		const FOO0 = 'BAR';		// 无效
	}
	if(true){
		define('FOO0', 'BAR');	// 有效
	}
	*/

	// 获取常量的值:constant()函数
	echo "<br/>";
	define("VAR0", "888");
	echo constant("VAR0");
	echo "<br/>";
	const CONSTANT0 = 'test contant';
	echo constant("CONSTANT0");

	// 获得所有已经定义的常量列表
	echo "<pre>";
	print_r(get_defined_constants());	// 获取本脚本中所有可以访问到的常量,输出一个超长的数组
  • 两种定义常量方法的区别:
  • const是一个语言结构,define()是一个函数;const编译时要比define()快;
  • define()声明常量是,常量名是一个字符串类型,可以动态拼接,可以用表达式做名称;const只能用普通的常量名称;
  • const关键字定义的常量区分大小写,define()函数可以通过第三个参数决定是否区分大小写;

2.常量和变量的区别

  • 常量前面没有美元符号;
  • 常量只能用define()函数和const关键字定义,不能通过赋值语句定义;
  • 常量可以不用理会变量范围的规则而在任何地方定义和访问;
  • 常量一旦被定义,就不能重新定义或者取消定义,直到脚本运行结束自动释放;
  • 常量的值只能是标量,可以是resource但是要经历避免,可能会出现问题。

五、PHP中的运算符号

1.算数运算符

算数运算符有 +(加)、-(减或取负)、*(乘)、/(除)、%(取余)、++(累加1)、–(递减1)、**(幂运算)

2.字符串运算符

字符串运算符只有一个,是英文的句号(.),也成为连接运算符;它是一个二元运算符,不仅可以将两个字符串连接起来,合并成新的字符串,还可以将一个字符串和任何标量数据类型相连接,合并成的都是新字符串。

3.赋值运算符

赋值运算符(=),它左边的操作数必须是变量,右边可以是表达式;赋值运算符的=号,并不是判断左右两边的操作数是否相等,而是要看作“复制”运算符,可以使用“=”运算符连续声明多个有相同值的变量;赋值运算符还有 +=、-=、*=、/=、%=、.=。

4.比较运算符

比较运算符有 >(大于)、<(小于)、>=(大于等于)、<=(小于等于)、==(等于)、 ===(全等于)、<>或!= (不相等)、 ! == (非全等于)、<=>(太空船运算符)、??(NULL合并操作符)。

  • “= =”和“= = =”的区别在于,“= =”只比较值是否相等,无论类型是否相同;但实际上,“= =”是先将两个操作数转换为同一类型,在进行比较;如果不仅要比较操作数的值,还有比较类型,那么就用“= = =”;
  • 太空船操作符“<=>”,也称组合比较符,当两边的操作是满足“<”时,返回-1,当满足“="时,返回0,当满足“>”时,返回1;
  • null合并运算符(??)代替了三元运算符(?:)和isset()函数的组合使用,如果变量存在且值不为NULL就返回自身的值,否则返回第二个操作数,是三元运算符的改造,减少代码量。

5.逻辑运算符

逻辑运算符有:and或&&(逻辑与)、or或||(逻辑或)、not或!(逻辑非)、xor(逻辑异或)

  • xor:逻辑异或,当作业两边操作数只有一个为TRUE时,返回TRUE,否则返回FALSE。

6.位运算符

位运算符有:&(按位与)、|(按位或)、^(按位异或)、~(按位非)、<<(左移)、>>(右移)

  • 逻辑或||和逻辑与&&有短路问题,即当前面的表达式满足条件时,就停止往下运算;按位或|和按位与&则没有短路问题,两边的表达式都会执行。

7.其他预算符

  • ?:(三元运算符,提供简单的逻辑判断);
  • ``(反引号,是执行预算符,PHP尝试将反引号中的内容作为外壳命令来执行,并将其输出信息返回);
  • @(错误抑制运算符,放到一个表达式之前,该由表达式产生的错误信息都会被忽视,实质上错误并没有被解决);
  • =>(数组下标指定符号,通过此符号指定数组的键与值);
  • ->(对象成员访问符号,访问对象中的成员属性或成员方法);
  • instanceof(类型运算符,用来测定一个给定的对象是否来自指定的对象类);

内容都总结自《细说PHP》第四版

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-06 23:56:55  更:2021-07-06 23:57:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/29 20:14:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码