PHP-Web服务端-02-PHP基础语法
PHP
超文本标记是用普通文本描述富文本的一种方式
PHP(PHP: Hypertext Preprocessor)是一种被广泛应用的脚本语言,它可以被嵌入到 HTML中,尤其适合做动态网站开发开发
使用 PHP 的目的就是能让静态网页变成动态网页,能称之为动态网页的核心就是让 HTML 上的内容不再被写死;
而是通过在 HTML 中嵌入一段可以在服务端执行的代码,从而达到动态网页的目标。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF‐8">
<title>当前日期</title>
</head>
<body>
<h1><?php echo date('Y‐m‐d'); ?></h1> //插入PHP动态获取时间
</body>
</html>
<?php 可以让代码进入"PHP" 模式
?> 可以让代码退出"PHP" 模式
类似于在 HTML 中使用 JavaScript,但是不同的是 JavaScript 运行在客户端,而 PHP 运行在服务端。
只有处于 PHP 标记内部的代码才是 PHP 代码,PHP 标记以外都原封不动
如果文件只有PHP代码,没有混编,需删除结束标记,避免额外产生空格
输出内容的方式
1)echo
<?php
// echo 是 PHP 中的一个特殊的“指令”,
// 不一定需要像函数那样通过 `()` 去使用
// 注意:echo 后面紧跟着一个空格
echo 'hello php';
echo 'hello', 'world';
// => `helloworld`
2)print
<?php
// print 与 echo 唯一区别就是只能有一个参数
print 'hello php';
// print 'hello', 'world';
// => Parse error: syntax error ...
3)var_dump
<?php
// var_dump 是一个函数,必须跟上 () 调用
// 可以将数据以及数据的类型打印为特定格式
var_dump('hello php');
// => 'string(9) "hello php"'
与html混编
1)普通嵌入
<p><?php echo 'hello'; ?></p>
2)语句混编
<?php if ($age >= 18) { ?>
<p>成年人</p>
<?php } else { ?>
<p>小朋友</p>
<?php } ?>
3)指令式混编
<?php if ($age > 18): ?>
<p>成年人</p>
<?php else: ?>
<p>小朋友</p>
<?php endif ?>
变量
编程语言中临时存放数据的容器
PHP 中申明一个变量是用一个美元符号后面跟变量名来表示。变量名同样是区分大小写的。
PHP 中变量无需声明类型,变量的类型根据值的类型来推断。
<?php
$foo; // 申明一个变量,变量名为 `foo`,未对其进行赋值
$bar = 'baz'; // 申明一个变量,将一个值为 `baz` 的字符串赋值给它
echo $foo; // 输出一个变量名为 `foo` 的变量
fn($bar); // 将一个变量名为 `bar` 的变量作为 `fn` 的实参传递
数据类型
string(字符串)
integer(整型)—— 只能存整数
float(浮点型)—— 可以存带小数位的数字
boolean(布尔型)
array(数组)
object(对象)
NULL(空)
Resource(资源类型)
Callback / Callable(回调或者叫可调用类型)
-
字符串
1》单引号字符串
不支持特殊的转义符号,例如 \n
如果要表示一个单引号字符内容,可以通过 ’ 表达
如果要表示一个反斜线字符内容,可以通过 \ 表达
2》双引号字符串
支持转义符号
支持变量解析 -
数组
1》索引数组<?php // 定义一个索引数组 $arr = array(1, 2, 3, 4, 5); var_dump(\$arr); // PHP 5.4 以后定义的方式可以用 `[]` $arr2 = [1, 2, 3, 4, 5]; var_dump($arr2);
2》关联数组
<?php // 注意:键只能是`integer`或者`string` $arr = array('key1' => 'value1', 'key2' => 'value2'); var_dump($arr); // PHP 5.4 以后定义的方式可以用 `[]` $arr2 = ['key1' => 'value1', 'key2' => 'value2']; var_dump($arr2);
数据类型转换
<?php
$str = '132';
// 将一个内容为数字的字符串强制转换为一个整形的数字
$num = (int)$str;
// 将一个数字强制转换为布尔值
$flag = (bool)$num;
-
运算符
数学运算符,逻辑运算符与 JavaScript 基本一致,无额外特殊情况
字符串连接(拼接)采用的是比较特殊的 “.”<?php $name = 'zce'; // 拼接 `hey ` 和 `zce` $message = 'hey ' . $name; // 相当于 += $foo .= $message
-
语句
分号分割
if、switch、while、for、 foreach、function… -
流程控制
1.顺序结构
2.分支结构if ... else switch ... case
3.循环结构
for while foreach --- 专门用来遍历数组 <?php $arr = array('name' => 'zhangsan', 'age' => '18'); foreach ($arr as $key => $value) { echo $key . ' ' . $value; }
-
函数
定义与使用函数的方式与 JavaScript 相同:<?php // 注意:使用方式有点差异(函数名不区分大小写),但是不要这么搞!!! function foo ($name, $title) { echo "$name ($title)"; } // 调用 foo('zce', 'UFO'); Foo('zgd', 'SBO'); // 大小写不区分
特性
-
变量作用域
关于变量作用域,PHP 与绝大多数语言也都不同:默认函数内不能访问函数所在作用域的成员。
在 JavaScript 中,我们可以在函数作用域中使用父级作用域中的成员如果需要访问全局变量,可以通过 global 关键字声明:
<?php $top = 'top variable'; function foo () { // 声明在当前作用域中获取全局作用域中的 `$top` global $top; $sub = 'sub variable'; echo $top; // => `top variable` function bar () { // 声明在当前作用域中获取全局作用域中的 `$top` 和 `$bar` global $top, $bar; echo $top; // => `top variable` echo $sub; // => 任然无法拿到,因为 `$sub` 不在全局范围,而是在 `foo` 函数中定义 } bar(); } foo();
-
超全局变量
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。
在函数或方法中无需执行 global $variable; 就可以访问它们这些超全局变量是:
$GLOBALS — 引用全局作用域中可用的全部变量 $_SERVER — 获取服务端相关信息 $_REQUEST — 获取提交参数 $_POST — 获取 POST 提交参数 $_GET — 获取 GET 提交参数 $_FILES — 获取上传文件 $_ENV — 操作环境变量 $_COOKIE — 操作 Cookie $_SESSION — 操作 Session
$GLOBALS
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。 PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键 <?php $x = 75; $y = 25; function foo () { $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; } foo(); echo $z; // => 100
-
常量
定义常量<?php // 定义常量使用的是内置的 `define` 函数 // 第一个参数是常量的名称,建议采用全大写字母命名,多个单词下划线分隔 // 第二个参数是常量中存放的数据,可以是任意类型 // 第三个参数是常量名称是否区不分大小写,默认 false 区分大小写 define('SYSTEM_NAME', '阿里百秀'); define('SYSTEM_ENABLE', true);
使用常量
<?php // 直接通过常量的名称访问常量 // 与变量不同的是不需要用 $ echo SYSTEM_NAME; echo SYSTEM_ENABLE;
-
载入其他文件
通常情况下,当一个文件中的代码过长,自然会想到要拆分到多个文件中。随着开发经验的积累,慢慢的会发现,
除了文件过程应该拆分文件,更应该做的事情是根据用途去划分。
不管你是怎样想的,核心问题都是一样:怎么将代码拆分到多个文件中?PHP 中引入其他 PHP 文件有四种方式:
require require_once include include_once
总结:include 一般用于载入公共文件,这个文件的存在与否不能影响程序后面的运行 require 用于载入不可缺失的文件 至于是否采用一次载入(once)这种方式取决于被载入的文件
常用API
任何编程语言本身并没有太多的能力,具体的能力大多数都来源于 API
PHP 的能力来源于它有 1000+ 内置函数,不是每一个函数都默认直接可以使用,有一些需要安装或者启用额外的"插件" 扩展
-
字符串处理
1》开启PHP扩展1. 将PHP目录中的 php.ini-development 复制一个 修改为 php.ini 2. 修改扩展文件所在目录 extension_dir 3. 修改文件中的部分选项(; 是注释符) 4. 在 Apache 配置文件中申明一下 php.ini 的所在目录
2》常用字符串处理函数
1.字符串截取 string substr ( string $string , int $start [, int $length ] ) string mb_substr ( string $str , int $start [, int $length = NULL [, string $encoding =mb_internal_encoding() ]] ) 2.字符串长度 int strlen ( string $string ) mixed mb_strlen ( string $str [, string $encoding = mb_internal_encoding() ] ) 3.大小写转换 string strtolower ( string $string ) string strtoupper ( string $string ) 4.去除首尾空白字符 string trim ( string $str [, string $character_mask = " \t\n\r\0\x0B" ] ) string ltrim ( string $str [, string $character_mask ] ) string rtrim ( string $str [, string $character_mask ] ) 5.查找字符串中某些字符首次出现的位置 mixed strpos ( string $haystack , mixed $needle [, int $offset = 0 ] ) int mb_strpos ( string $haystack , string $needle [, int $offset = 0 [, string $encoding = mb_internal_encoding() ]] ) 6.字符串替换 mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] ) 7.重复字符串 string str_repeat ( string $input , int $multiplier ) 8.字符串分割 array explode( string $input, string $char )
-
数组处理
1.获取关联数组中全部的键/值 array_keys() / array_values() 2.判断关联数组中是否存在某个键 array_key_exists() 3.去除重复的元素 array_unique() 4.将一个或多个元素追加到数组中 array_push() $arr[] = 'new value 5.删除数组中的最后一个元素 array_pop() 6.数组长度 count() 7.检测存在 in_array()
-
时间处理
1.时间戳:time() 从 Unix 纪元(格林威治时间 1970-01-01 00:00:00)到当前时间的秒数 2.格式化日期:date() 获取有格式的当前时间 格式化一个指定的时间戳 可以通过 strtotime() 将有格式的时间字符串转换为时间
-
文件处理
查看全部:http://www.w3school.com.cn/php/php_ref_filesystem.asp