PHP极速入门

Posted 汤米先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP极速入门相关的知识,希望对你有一定的参考价值。

文章目录

前言

本人有python和Java的语言基础,本篇学习笔记也是针对我个人情况来写的,其中语言相似部分都忽略了。和我有同样基础的能够参考本篇博客极速入门php。其中多处代码来源于菜鸟教程,大家也可选择到菜鸟教程学习。

一. PHP概述

php是超文本预处理器的简称,是一种被广泛应用的开源通用的服务器端脚本语言,适用于Web开发并可嵌入html中。

二. PHP运算符

.:并置连接符,可以连接两个字符串。

1. 比较运算符

xy 等于
x
=y 绝对等于 x与y相等,且类型相同。

2. 逻辑运算符

除and,or,&& ,||外,还有
x xor y ,异或 ,如果 x 和 y 有且仅有一个为 true,则返回 true

3. 数组运算符

x == y (相等)——如果 x 和 y 具有相同的键/值对,则返回 true
x === y(恒等)——如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true
x <> y(不相等)——如果 x 不等于 y,则返回 true

4. 组合比较符

又称太空船操作符
$c = $a <=> $b;
解析如下
如果 $a > $b, 则 $c 的值为 1。
如果 $a == $b, 则 $c 的值为 0。
如果 $a < $b, 则 $c 的值为 -1。

三. 条件语句

  • if 语句 - 在条件成立时执行代码
  • if…else 语句 - 在条件成立时执行一块代码,条件不成立时执行另一块代码
  • if…elseif…else 语句 - 在若干条件之一成立时执行一个代码块
  • switch 语句 - 在若干条件之一成立时执行一个代码块

四. 数组

$cars=array(“Volvo”,“BMW”,“Toyota”);
$cars[0]=“Volvo”;
$cars[1]=“BMW”;
$cars[2]=“Toyota”;

获取长度:count(cars)
遍历数组:

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
 
for($x=0;$x<$arrlength;$x++)

    echo $cars[$x];
    echo "<br>";

?>

1. 关联数组

自定义key-value值

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

等同于

$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";

遍历:

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
 
foreach($age as $x=>$x_value)

    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";

?>

2. 数组排序

  • sort() - 对数组进行升序排列
  • rsort() - 对数组进行降序排列
  • asort() - 根据关联数组的值,对数组进行升序排列
  • ksort() - 根据关联数组的键,对数组进行升序排列
  • arsort() - 根据关联数组的值,对数组进行降序排列
  • krsort() - 根据关联数组的键,对数组进行降序排
<?php
$cars=array("Volvo","BMW","Toyota");
sort($cars);
?>

五. 循环

  • while - 只要指定的条件成立,则循环执行代码块
  • do…while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环
  • for - 循环执行代码块指定的次数
  • foreach - 根据数组中每个元素来循环代码块
foreach ($array as $value)

    要执行代码;

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

foreach ($array as $key => $value)

    要执行代码;

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

六. 函数

数组函数库

七. 表单提交

html通过form表单,将用户输入的数据传入welcome.php页面
php页面可得到数据,并将其打印出来。
要带上请求类型

欢迎<?php echo $_POST["fname"]; ?>!<br>
你的年龄是 <?php echo $_POST["age"]; ?>  岁。

八. 多维数组

1. 二维数组

形式一:

<?php
// 二维数组:
$cars = array
(
    array("Volvo",100,96),
    array("BMW",60,59),
    array("Toyota",110,100)
);
echo $cars['0'][0
?>

打印结果为Volvo

形式二:

<?php
$sites = array
(
    "runoob"=>array
    (
        "菜鸟教程",
        "http://www.runoob.com"
    ),
    "google"=>array
    (
        "Google 搜索",
        "http://www.google.com"
    ),
    "taobao"=>array
    (
        "淘宝",
        "http://www.taobao.com"
    )
);
echo $sites['runoob'][0] . '地址为:' . $sites['runoob'][1]
?>

打印结果为:
菜鸟教程地址为:http://www.runoob.com

2.三维数组

<?php
// 创建三维数组
$myarray = array(
    array(
        array(1, 2),
        array(3, 4),
    ),
    array(
        array(5, 6),
        array(7, 8),
    ),
);
     
// 输出数组信息
print_r($myarray);
?>

更多维数组以此类推

九. 包含文件

执行包含文件语句,是其他文件代码执行到当前代码中来,通常解决部分标准的页头页脚等有共同部分的修改繁琐问题。

include和require
两者在处理执行错误时的方法不一样,执行成功的效果相同。

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

语法 :

<?php include 'header.php'; ?>

十. 文件处理

1. 打开文件

$file=fopen("welcome.txt","r");
$file=fopen("welcome.txt","r") or exit("Unable to open file!");

r 只读。在文件的开头开始。
r+ 读/写。在文件的开头开始。
w 只写。打开并清空文件的内容;如果文件不存在,则创建新文件。
w+ 读/写。打开并清空文件的内容;如果文件不存在,则创建新文件。
a 追加。打开并向文件末尾进行写操作,如果文件不存在,则创建新文件。
a+ 读/追加。通过向文件末尾写内容,来保持文件内容。
x 只写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。
x+ 读/写。创建新文件。如果文件已存在,则返回 FALSE 和一个错误。

2. 关闭文件

fclose($file);

3. 判断遍历到末尾

if (feof($file)) echo "已经到达文件结尾";

逐行读取:

<?php
$file = fopen("welcome.txt", "r") or exit("无法打开文件!");
// 读取文件每一行,直到文件结尾
while(!feof($file))

    echo fgets($file). "<br>";

fclose($file);
?>

逐字符读取:

<?php
$file=fopen("welcome.txt","r") or exit("无法打开文件!");
while (!feof($file))

    echo fgetc($file);

fclose($file);
?>

十一. 文件上传漏洞

允许用户上传文件是一个巨大的安全风险。对于普通用户要慎重使用本功能。

案例:

1.表单上传

<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>

<form action="upload_file.php" method="post" enctype="multipart/form-data">
	<label for="file">文件名:</label>
	<input type="file" name="file" id="file"><br>
	<input type="submit" name="submit" value="提交">
</form>

</body>
</html>

enctype 属性规定了在提交表单时要使用哪种内容类型
multipart/form-data表示二进制
type=“file” 属性规定了应该把输入作为文件来处理

2.上传结果

<?php
if ($_FILES["file"]["error"] > 0)

	echo "错误:" . $_FILES["file"]["error"] . "<br>";

else

	echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
	echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
	echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
	echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];

?

3.上传限制

限制文件大小、类型等

<?php
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);        // 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800)    // 小于 200 kb
&& in_array($extension, $allowedExts))

	if ($_FILES["file"]["error"] > 0)
	
		echo "错误:: " . $_FILES["file"]["error"] . "<br>";
	
	else
	
		echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
		echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
		echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
		echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
	

else

	echo "非法的文件格式";

?>

4.保存上传文件

<?php
// 允许上传的图片后缀
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
echo $_FILES["file"]["size"];
$extension = end($temp);     // 获取文件后缀名
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 204800)   // 小于 200 kb
&& in_array($extension, $allowedExts))

	if ($_FILES["file"]["error"] > 0)
	
		echo "错误:: " . $_FILES["file"]["error"] . "<br>";
	
	else
	
		echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";
		echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
		echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
		echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>";
		
		// 判断当前目录下的 upload 目录是否存在该文件
		// 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
		if (file_exists("upload/" . $_FILES["file"]["name"]))
		
			echo $_FILES["file"]["name"] . " 文件已经存在。 ";
		
		else
		
			// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
			move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
			echo "文件存储在: " . "upload/" . $_FILES["file"]["name"];
		
	

else

	echo "非法的文件格式";

十二. cookie

1. 创建cookie

语法:

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

一般情况下只需要使用前三个参数

<?php
setcookie("user", "runoob", time()+3600);
?以上是关于PHP极速入门的主要内容,如果未能解决你的问题,请参考以下文章

PHP极速入门

三篇文章带你极速入门php之语法

三篇文章带你极速入门php之php原生实现登陆注册

php关联数组怎么按键名实现升序排列

php之快速入门学习-11(数组排序)

1 小时 SQL 极速入门——分析函数