PHP编程
首先
PHP是一种脚本语言,适合用于Web开发,因为可以嵌入HTML中。
2.
环境
我使用了 VMware Workstation 15 Player 中的虚拟机。
虚拟机的版本如下所示。
[root@server ~]# cat /etc/redhat-release
CentOS Linux release 8.3.2011
[root@server ~]# uname -r
4.18.0-240.el8.x86_64
3 安装步骤
[root@server ~]# dnf install php
[root@server ~]# php -v
PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
4 你好世界
在以 另外,变量名有以下条件:
– 首个字符只能是字母或下划线。
– 第二个字符及以后的字符只能是字母、数字或下划线。
6.1 中文的使用方法
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$name="hana_shin";
echo "My name is $name"."\n";
?>
[root@server ~]# ./tp.php
My name is hana_shin
单引号和双引号的区别是什么?
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$name="hana_shin";
echo "My name is $name"."\n";
echo 'My name is $name'."\n";
?>
[root@server ~]# ./tp.php
My name is hana_shin
My name is $name
6.3 使用数字的方法
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$val=12345;
echo "$val\n";
?>
[root@server ~]# ./tp.php
12345
7文字列的操作方法
7.1 文本操作函数的用法
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$str="12345";
printf("strlen=%d\n", strlen($str));
printf("substr=%s\n", substr($str,2,3));
printf("str_replace=%s\n", str_replace('234','bcd',$str));
?>
[root@server ~]# ./tp.php
strlen=5
substr=345
str_replace=1bcd5
7.2 使用文字串合運算子的方法(句號)
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
print "123"."45"."\n";
?>
[root@server ~]# ./tp.php
12345
7.3 解析查询字符串的方法(parse_str)
查询字符串是将名称和值通过等号连接,通过&符号组合成的字符串。
例如,可以是以下形式的字符串:
first_name=hana&last_name=shin&age=10
我们可以使用parse_str函数,从查询字符串中提取出名称和值的对。
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$str = "first_name=hana&last_name=shin&age=10";
parse_str($str, $output);
foreach($output as $key => $value) {
print "$key=$value"."\n";
}
?>
[root@server ~]# ./tp.php
first_name=hana
last_name=shin
age=10
条件分岐的使用方法有8个。
8.1 基础使用方法
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$var=$argv[1];
if($var == 1) {
print "1"."\n";
}
else if($var == 2) {
print "2"."\n";
}
else {
print "other"."\n";
}
?>
[root@server ~]# ./tp.php 1
1
[root@server ~]# ./tp.php 2
2
[root@server ~]# ./tp.php 3
other
8.2 使用逻辑运算符的方法
・$a && $b : 当且仅当$a和$b都为真时才为真
・$a || $b : 当$a或$b中的任一个为真时才为真
我会创建一个脚本来显示命令行参数的值如果大于等于10且小于20,则显示”IN”,否则显示”OUT”。
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$var=$argv[1];
if(($var >=10) && ($var <20)) {
print "IN"."\n";
}
else {
print "OUT"."\n";
}
?>
[root@server ~]# ./tp.php 10
IN
[root@server ~]# ./tp.php 20
OUT
9重复的用法
9月1日,当…
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$var=0;
while($var++ < 5){
print "$var"."\n";
}
?>
[root@server ~]# ./tp.php
1
2
3
4
5
9.2 for循环
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
for($var=0; $var<5; $var++) {
print "$var"."\n";
}
?>
[root@server ~]# ./tp.php
0
1
2
3
4
10个数组的使用方法
10.1 数组的创建方法
使用10.1.1数组的方法
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$var = array("aa","bb","cc");
print "$var[0]"."\n";
print "$var[1]"."\n";
print "$var[2]"."\n";
?>
[root@server ~]# ./tp.php
aa
bb
cc
用指定的键来赋值的方法是10.1.2.
我們來在鍵為0、1和2的元素中分別賦予值10、20和30。
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$var[0] = 10;
$var[1] = 20;
$var[2] = 30;
foreach ($var as $tmp) {
print "$tmp"."\n";
}
?>
[root@server ~]# ./tp.php
10
20
30
10.1.3 创建关联数组的方法
在以下情况下,suzuki、sato和ito不是数字,而是字符串。我们将使用foreach来显示关联数组的值。
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$person=array("suzuki"=>30, "sato"=>40, "ito"=>50);
foreach($person as $key=>$value) {
print "$key is $value years old"."\n";
}
?>
[root@server ~]# ./tp.php
suzuki is 30 years old
sato is 40 years old
ito is 50 years old
10.2 添加和删除数组元素的方法
10.2.1 如何在数组的开头添加元素的方法(array_unshift)
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
print "--- before adding item ---"."\n";
$item = array("11", "22", "33");
foreach($item as $key => $value) {
print "[$key]=$value"."\n";
}
print "--- after adding item ---"."\n";
$size = array_unshift($item, "88", "99");
foreach($item as $key => $value) {
print "[$key]=$value"."\n";
}
?>
[root@server ~]# ./tp.php
--- before adding item ---
[0]=11
[1]=22
[2]=33
--- after adding item ---
[0]=88
[1]=99
[2]=11
[3]=22
[4]=33
10.2.2 添加元素到数组末尾的方法是使用 array_push.
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
print "--- before adding item ---"."\n";
$item = array("11", "22", "33");
foreach($item as $key => $value) {
print "[$key]=$value"."\n";
}
print "--- after adding item ---"."\n";
$size = array_push($item, "88", "99");
foreach($item as $key => $value) {
print "[$key]=$value"."\n";
}
?>
[root@server ~]# ./tp.php
--- before adding item ---
[0]=11
[1]=22
[2]=33
--- after adding item ---
[0]=11
[1]=22
[2]=33
[3]=88
[4]=99
从数组的开头删除元素的方法(array_shift)是10.2.3的内容。
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
print "--- before adding item ---"."\n";
$item = array("11", "22", "33");
foreach($item as $key => $value) {
print "[$key]=$value"."\n";
}
print "--- after adding item ---"."\n";
$size = array_shift($item);
foreach($item as $key => $value) {
print "[$key]=$value"."\n";
}
?>
[root@server ~]# ./tp.php
--- before adding item ---
[0]=11
[1]=22
[2]=33
--- after adding item ---
[0]=22
[1]=33
10.2.4 删除数组末尾的元素的方法(array_pop)
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
print "--- before adding item ---"."\n";
$item = array("11", "22", "33");
foreach($item as $key => $value) {
print "[$key]=$value"."\n";
}
print "--- after adding item ---"."\n";
$size = array_pop($item);
foreach($item as $key => $value) {
print "[$key]=$value"."\n";
}
?>
[root@server ~]# ./tp.php
--- before adding item ---
[0]=11
[1]=22
[2]=33
--- after adding item ---
[0]=11
[1]=22
使用var_dump函数显示数组的所有元素
在调试时使用。
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$var = array("aa","bb","cc");
var_dump($var);
?>
[root@server ~]# ./tp.php
array(3) {
[0]=>
string(2) "aa"
[1]=>
string(2) "bb"
[2]=>
string(2) "cc"
}
10.6 用于计算数组元素值总和的方法(array_sum)
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$value_array = array(100, 200, 300, 400);
$sum = array_sum($value_array);
print "sum is $sum"."\n"
?>
[root@server ~]# ./tp.php
sum is 1000
10.7 寻找数组元素的方法(array_search)
array_search函数用于在数组中搜索具有指定值的元素。
其格式如下:
array_search(搜索值, 目标数组, 类型检查选项)
如果找到具有指定值的元素,则返回该元素的键。
如果省略类型检查选项,则默认为FALSE。
FALSE将判断数值的10和字符串的”10″相同。
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$val = $argv[1];
$customer = array("suzuki"=>30, "sato"=>40, "kato"=>50);
$key = array_search($val, $customer);
if($key == TRUE) {
print "$key is $val years old"."\n";
}
else {
print "Not Fond"."\n";
}
?>
寻找年龄为20岁的人,但发现没有任何人。
[root@server ~]# ./tp.php 20
Not Fond
寻找30岁的人。发现Suzuki先生符合条件。
[root@server ~]# ./tp.php 30
suzuki is 30 years old
寻找年龄为50岁的人。可知加藤先生符合条件。
[root@server ~]# ./tp.php 50
kato is 50 years old
11个函数的使用方法
11.1 函数参数的使用方法
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
function add($arg1, $arg2) {
$sum = $arg1 + $arg2;
return $sum;
}
print add(10,20);
print "\n";
?>
[root@server ~]# ./tp.php
30
11.2 使用默认参数值的方法
可以指定默认值在函数的参数中,以便在调用时没有提供值的情况下使用。
所有具有默认值的参数应放置在没有默认值的参数之后。
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
function add($arg1, $arg2=20, $arg3=30) {
$sum = $arg1 + $arg2 + $arg3;
return $sum;
}
print add(10);
print "\n";
print add(100,200,300);
print "\n";
?>
[root@server ~]# ./tp.php
60
600
显示12小时制的方法
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
print "date :".date('c')."\n";
print "strftime :".strftime('%c')."\n";
?>
[root@server ~]# ./tp.php
date :2021-01-09T10:59:06+00:00
strftime :Sat Jan 9 10:59:06 2021
如何读写13份文件
用于读取文件内容的方法
[root@server ~]# echo 1234567890 > test.txt
[root@server ~]# cat test.txt
1234567890
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$str = file_get_contents('./test.txt');
print "$str"."\n";
?>
[root@server ~]# ./tp.php
1234567890
读取文件的一部分的方法是 13.2
我将尝试从test.txt文件的第6个字符读取3个字符。
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
$str = file_get_contents('./test.txt', FALSE, NULL, 5, 3);
print "$str"."\n";
?>
[root@server ~]# ./tp.php
678
包含(include)文件的方法
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
print "main file"."\n";
include('hoge.php');
?>
[root@server ~]# cat hoge.php
<?php
print "hoge file"."\n";
?>
[root@server ~]# ./tp.php
main file
hoge file
与15 数据库连接方式
我們來嘗試連接到MariaDB。有關MariaDB的安裝方法,請參考MariaDB的使用手冊。
基於安全性考慮,我不建議使用root帳號連接到資料庫,不過出於方便起見,我們現在使用root帳號連接。
15.1 事前準備
在我的环境中,当我运行脚本时,会出现以下错误。
PHP Fatal error: Uncaught Error: Class 'PDO' not found in /root/tp.php:3
PHP Fatal error: Uncaught PDOException: could not find driver in /root/tp.php:3
我已经安装了以下的软件包。
[root@server ~]# dnf -y install php-pdo
[root@server ~]# dnf -y install php-mysqlnd
15.2 创建数据库
由于PHP想要连接到名为testdb的数据库,因此请在MariaDB监视器中预先创建testdb数据库。
MariaDB [(none)]> create database testdb;
Query OK, 1 row affected (0.000 sec)
确认数据库。
可以看到已经创建了一个名为testdb的数据库。
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| testdb |
+--------------------+
5 rows in set (0.001 sec)
15.3 连接到数据库
连接数据库并创建名为customer的表,然后将记录插入到customer表中。记录由姓名和年龄组成。
[root@server ~]# cat tp.php
#!/usr/bin/php
<?php
try {
$pdo = new PDO('mysql:host=127.0.0.1;dbname=testdb', 'root', 'admin');
$sql = "create table customer (name varchar(32), age tinyint unsigned)";
$stmt = $pdo->query($sql);
$sql = "insert into customer values('suzuki', 40)";
$stmt = $pdo->prepare($sql);
$res = $stmt->execute(null);
}catch(Exception $e) {
die("Connection Failed: ".$e->getMessage());
}
$pdo = null;
?>
确认testdb数据库中已注册的表格。
可以发现没有任何表格被注册。
MariaDB [testdb]> show tables;
Empty set (0.001 sec)
执行脚本。
[root@server ~]# ./tp.php
确认表格。
可以看到名为customer的表格已经被创建。
MariaDB [testdb]> show tables;
+------------------+
| Tables_in_testdb |
+------------------+
| customer |
+------------------+
1 row in set (0.000 sec)
确认在客户表中已经登记了一条记录。
可以看到名字是Suzuki,年龄为40岁的记录已经被登记。
MariaDB [testdb]> select * from customer;
+--------+------+
| name | age |
+--------+------+
| suzuki | 40 |
+--------+------+
1 row in set (0.000 sec)
Z的資訊參考
PHP 数据对象
Tohoho 的 PHP 入门
PHP5 技术认证 [初级] 考试问题集 攻略 [PJ0-100] 版本