php语言-基础

摘要

php是Hypertext Preprocessor的缩写,是超级文本预处理语言

php是一种创建动态交互性站点的强有力的服务器端脚本语言

php是世界上最好的语言,哈哈

基本语法

基本的 PHP 语法

PHP 脚本可以放在文档中的任何位置。
PHP 脚本以 <?php 开始,以 ?> 结束

1
2
3
4
<?php
// PHP 代码
echo "hello world";
?>

注释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html>
<html>
<body>

<?php
// 这是 PHP 单行注释

/*
这是
PHP 多行
注释
*/
?>

</body>
</html>

变量

变量是用于存储信息的”容器”:

1
2
3
4
5
6
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>

PHP 变量规则:

  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格
  • 变量名是区分大小写的($y 和 $Y 是两个不同的变量)

PHP 变量作用域

PHP 有四种不同的变量作用域:

  • local
    • 在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问
  • global
    • 全局变量
  • static
    • 当函数完成时,不会被删除
  • parameter
    • 参数是通过调用代码将值传递给函数的局部变量。
    • 参数是在参数列表中声明的,作为函数声明的一部分

在所有函数外部定义的变量,拥有全局作用域。
除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$x=5; // 全局变量

function myTest()
{
$y=10; // 局部变量
echo "<p>测试函数内变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
}

myTest();

echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
?>

global 关键字用于函数内访问全局变量。
在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$x=5;
$y=10;

function myTest()
{
global $x,$y;
$y=$x+$y;
}

myTest();
echo $y; // 输出 15
?>

打印

在 PHP 中有两个基本的输出方式: echo 和 print。

echo 和 print 区别:

  • echo - 可以输出一个或多个字符串
  • print - 只允许输出一个字符串,返回值总为 1
    提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
1
2
3
4
<?php
echo "我车的品牌是 {$cars[0]}";
print "我要学习 PHP!";
?>

EOF

PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。

使用概述:

  • 必须后接分号,否则编译通不过。
  • EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
  • 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
  • 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
  • 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。
1
2
3
4
5
6
7
8
9
<?php
$name="runoob";
$a= <<<EOF
"abc"$name
"123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>

数据类型

String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。

常量

常量是一个简单值的标识符。该值在脚本中不能改变。
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
注意: 常量在整个脚本中都可以使用。

1
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
1
2
3
4
5
<?php
// 不区分大小写的常量名
define("GREETING", "欢迎访问 c.isme.pub", true);
echo greeting; // 输出 "欢迎访问 c.isme.pub"
?>

并置运算符

1
2
3
4
5
<?php
$txt1="Hello";
$txt2="wowo";
echo $txt1 . " " . $txt2;
?>

获取字符串长度

1
2
3
<?php
echo strlen("Hello wowo");
?>

查找字符或指定文本

1
2
3
<?php
echo strpos("Hello wowo","wowo");
?>

递增,递减

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$x=10;
echo ++$x; // 输出11

$y=10;
echo $y++; // 输出10

$z=5;
echo --$z; // 输出4

$i=5;
echo $i--; // 输出5
?>

‘==’ 和 ‘===’的区别

== 值相等
===值和类型都相等

三元运算

(expr1) ? (expr2) : (expr3)

1
2
3
4
5
6
7
8
9
10
<?php
$test = 'wowo';
// 普通写法
$username = isset($test) ? $test : 'nobody';
echo $username, PHP_EOL;

// PHP 5.3+ 版本写法
$username = $test ?: 'nobody';
echo $username, PHP_EOL;
?>

php条件语句

if...elseif....else

1
2
3
4
5
6
7
8
9
10
11
12
if (条件)
{
if 条件成立时执行的代码;
}
elseif (条件)
{
elseif 条件成立时执行的代码;
}
else
{
条件不成立时执行的代码;
}

switch

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
switch (n)
{
case label1:
如果 n=label1,此处代码将执行;
break;
case label2:
如果 n=label2,此处代码将执行;
break;
default:
如果 n 既不等于 label1 也不等于 label2,此处代码将执行;
}
?>

while

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<html>
<body>

<?php
$i=1;
while($i<=5)
{
echo "The number is " . $i . "<br>";
$i++;
}
?>

</body>
</html>

for

1
2
3
4
5
6
<?php
for ($i=1; $i<=5; $i++)
{
echo "数字为 " . $i . PHP_EOL;
}
?>

数组

数组是一个能在单个变量中存储多个值的特殊变量。
在 PHP 中,array() 函数用于创建数组:

1
array();

在 PHP 中,有三种类型的数组:

  • 数值数组 - 带有数字 ID 键的数组
  • 关联数组 - 带有指定的键的数组,每个键关联一个值
  • 多维数组 - 包含一个或多个数组的数组

自动分配 ID 键(ID 键总是从 0 开始):

1
$cars=array("Volvo","BMW","Toyota");

人工分配 ID 键:

1
2
3
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";

count() 函数用于返回数组的长度(元素的数量):

1
2
3
4
<?php
$cars=array("Volvo","BMW","Toyota");
echo count($cars);
?>

遍历并打印数值数组中的所有值,您可以使用 for 循环,如下所示:

1
2
3
4
5
6
7
8
9
10
<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);

for($x=0;$x<$arrlength;$x++)
{
echo $cars[$x];
echo "<br>";
}
?>

运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php 
$x=10;
$y=6;
echo ($x + $y); // 输出16
echo '<br>'; // 换行

echo ($x - $y); // 输出4
echo '<br>'; // 换行

echo ($x * $y); // 输出60
echo '<br>'; // 换行

echo ($x / $y); // 输出1.6666666666667
echo '<br>'; // 换行

echo ($x % $y); // 输出4
echo '<br>'; // 换行

echo -$x;
?>

函数

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function writeName($fname)
{
echo $fname . " Refsnes.<br>";
}

echo "My name is ";
writeName("Kai Jim");
echo "My sister's name is ";
writeName("Hege");
echo "My brother's name is ";
writeName("Stale");
?>

PHP连接mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function mysql_con($sql){
$mysql_name = 'localhost';
$mysql_user = 'root';
$mysql_pw = 'root';
$mysql_db = 'update';
$conn = mysqli_connect($mysql_name,$mysql_user,$mysql_pw,$mysql_db);
if(! $conn )
{
die('Could not connect: ' . mysqli_error());
}
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
$retval = mysqli_query($conn,$sql );
if(! $retval )
{
die('执行sql失败: ' . mysqli_error($conn));
}
else{
echo "执行sql成功\n";
}
//释放连接
mysqli_close($conn);
//
return mysqli_fetch_all($retval);
}

php实现上传图片并在数据库中记录图片信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>
<meta charset="utf-8">
<title>upload homework</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>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
// 允许上传的图片后缀
function update_mysql($filename)
{
$nowtime = date('Y-m-d', time());
$sql = 'insert into upload (filename,date) values (' . '"' . "$filename" . '"' . ',' . '"' . $nowtime . '"' . ')' . ';';
mysql_con($sql);
}
function mysql_con($sql){
$mysql_name = 'localhost';
$mysql_user = 'root';
$mysql_pw = 'root';
$mysql_db = 'update';
$conn = mysqli_connect($mysql_name,$mysql_user,$mysql_pw,$mysql_db);
if(! $conn )
{
die('Could not connect: ' . mysqli_error());
}
echo '<p>数据库连接成功!</p>';
echo $nowtime;
//$sql = 'insert into upload (filename,date) values (' . '"' . "$filename" . '"' . ',' . '"' . $nowtime . '"'. ')' . ';';
$retval = mysqli_query($conn,$sql );
if(! $retval )
{
die('插入失败: ' . mysqli_error($conn));
}
else{
echo "插入成功\n";
}
mysqli_close($conn);
return mysqli_fetch_all($retval);
}
function list_book(){
$sql = 'select * from upload';
echo $sql;
$res = mysql_con($sql);
foreach($res as $key => $value){
echo "{$key}==>{$value}<br>";
}

}
function picture(){
$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"];
$filename = $_FILES["file"]["name"];
echo $filename;
update_mysql($filename);
}
}
}
else
{
echo "非法的文件格式";
}
}
picture();
//list_book();
?>