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
    

    PHP-Web服务端-02-PHP基础语法
    总结:

      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() 将有格式的时间字符串转换为时间
    
  • 文件处理
    PHP-Web服务端-02-PHP基础语法
    查看全部:http://www.w3school.com.cn/php/php_ref_filesystem.asp