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 文本操作函数的用法

関数意味strlen文字列の長さを調べるsubstr文字列の一部を取り出すstr_replace文字列の一部を別の文字列に置き換える
[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] 版本

广告
将在 10 秒后关闭
bannerAds