一、什么是PHP?

PHP 是一种创建动态交互性站点的服务器端脚本语言。
PHP 能够生成动态页面内容。
PHP 能够创建、打开、读取、写入、删除以及关闭服务器上的文件。
PHP 能够接收表单数据并处理。
PHP 能够发送并取回 cookies
PHP 能够添加、删除、修改数据库中的数据。
PHP 能够限制用户访问网站中的某些页面。
PHP 能够对数据进行加密和解密。
....

服务器端脚本语言包含:

PHP:开源、免费、应用广泛、入门简单,WordPress、facebook等就是通过其开发的
Java.
net...

学习PHP必备环境一键搭建包:

XAMMP:https://www.apachefriends.org/download.html
phpstudy:http://www.phpstudy.net/

例如使用phpstudy这个包的截图如下:

  

一般情况下,创建的php文件都放在WWW下或者WWW子目录php下,然后在浏览器使用:http://127.0.0.1(或者localhost)/目标文件或者http://127.0.0.1(或者localhost)/php/目标文件进行运行即可

PHP格式:

PHP 脚本以<?php 开头,以 ?> 结尾,其文件的默认文件扩展名是.php,其语句以分号(;)结尾。

二、php入门

php脚本的后面名为.php,代码放置在下面的括号里面:

  1. <?php
  2. .......
  3. ?>

echo可以打印信息,类似于printf

  1. <?php
  2. echo "hallo world";
  3. ?>

每条语句后面用分号";"结尾。

php支持三种注释方式:

  1. <?php
  2. // 第一种
  3.  
  4. # 第二种
  5.  
  6. /*
  7. 这是
  8. 多行
  9. 注释
  10. */
  11. ?>

在php中,函数、类、和关键词的大小写都是同一个东西:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4.   <?php
  5.     ECHO "Hello World!<br>";
  6.     echo "Hello World!<br>";
  7.     Echo "Hello World!<br>";
  8.   ?>
  9. </body>
  10. </html>

不过所有变量都对大小写敏感,需要区分大小写。

  1. <?php
  2.   $color="red";
  3.   $Color="black";
  4.   echo "my car is " . $color . "<br>";
  5.   echo "my car is " . $Color . "<br>";
  6. ?>

上面的例子同时指出了变量定义以及字符串拼接的语法。

变量命名规则:

  1. PHP 变量规则:
  2. 变量以 $ 符号开头,其后是变量的名称
  3. 变量名称必须以字母或下划线开头
  4. 变量名称不能以数字开头
  5. 变量名称只能包含字母数字字符和下划线(A-z0-9 以及 _
  6. 变量名称对大小写敏感($y $Y 是两个不同的变量)

变量会在第一次赋值时被创建。无需声明变量的类型。

变量会有三种不同的作用域:

  1. PHP 有三种不同的变量作用域:
  2. local(局部)
  3. global(全局)
  4. static(静态)
  5.  
  6. 函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
  7. 函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
  8. 下面的例子测试了带有局部和全局作用域的变量:
  9.  
  10. <?php
  11. $x=5; // 全局作用域
  12.  
  13. function myTest() {
  14. $y=10; // 局部作用域
  15. echo "<p>测试函数内部的变量:</p>";
  16. echo "变量 x 是:$x";
  17. echo "<br>";
  18. echo "变量 y 是:$y";
  19. }
  20.  
  21. myTest();
  22.  
  23. echo "<p>测试函数之外的变量:</p>";
  24. echo "变量 x 是:$x";
  25. echo "<br>";
  26. echo "变量 y 是:$y";
  27. ?>

运行结果:

  1. 测试函数内部的变量:
  2.  
  3. 变量 x 是:
  4. 变量 y 是:10
  5. 测试函数之外的变量:
  6.  
  7. 变量 x 是:5
  8. 变量 y 是:

比较奇怪的就是为什么全局变量不能在局部函数内访问。

其实可以访问,不过需要global关键字的帮助:

  1. global 关键词用于访问函数内的全局变量。
  2. 要做到这一点,请在(函数内部)变量前面使用 global 关键词:
  3. <?php
  4. $x=5;
  5. $y=10;
  6.  
  7. function myTest() {
  8. global $x,$y;
  9. $y=$x+$y;
  10. }
  11.  
  12. myTest();
  13. echo $y; // 输出 15
  14. ?>

PHP 同时在名为 $GLOBALS[index] 的数组中存储了所有的全局变量。下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。

  1. <?php
  2. $x=5;
  3. $y=10;
  4.  
  5. function myTest() {
  6. $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
  7. }
  8.  
  9. myTest();
  10. echo $y; // 输出 15
  11. ?>

通常,当函数完成执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要static:

  1. <?php
  2.  
  3. function myTest() {
  4. static $x=0;
  5. echo $x;
  6. $x++;
  7. }
  8.  
  9. myTest();
  10. myTest();
  11. myTest();
  12.  
  13. ?>

php中echo和print都能使用,两者的唯一区别是print返回1,echo没有返回值。

strlen函数可以返回字符串的长度。

strpos函数用来确定另外一个字符串的位置:

  1. <?php
  2. echo strpos("Hello world!","world");
  3. ?>

完整的string参考手册.

使用define函数来定义常量:

  1. <?php
  2. define("GREETING", "Welcome to W3School.com.cn!");
  3. echo GREETING;
  4. ?>

define函数还有第三个参数,用来指定是否大小写敏感。

php的if-else语句和其他语言大同小异,举个例子:

  1. <?php
  2. $t=date("H");
  3.  
  4. if ($t<"10") {
  5. echo "Have a good morning!";
  6. } elseif ($t<"20") {
  7. echo "Have a good day!";
  8. } else {
  9. echo "Have a good night!";
  10. }
  11. ?>

switch-case语句:

  1. <?php
  2. switch ($x)
  3. {
  4. case 1:
  5. echo "Number 1";
  6. break;
  7. case 2:
  8. echo "Number 2";
  9. break;
  10. case 3:
  11. echo "Number 3";
  12. break;
  13. default:
  14. echo "No number between 1 and 3";
  15. }
  16. ?>

while、for语句和其他语言无差别,看看foreach吧:

  1. <?php
  2. $colors = array("red","green","blue","yellow");
  3.  
  4. foreach ($colors as $value) {
  5. echo "$value <br>";
  6. }
  7. ?>

php的真正力量来自于它的函数,它有1000个内置函数。

用户定义的函数声明以关单 "function" 开头:

  1. function functionName() {
  2. 被执行的代码;
  3. }

举个例子:

  1. <?php
  2. function writeMsg() {
  3. echo "Hello world!";
  4. }
  5.  
  6. writeMsg(); // 调用函数
  7. ?>
  8.  
  9. // 含参数
  10. <?php
  11. function familyName($fname,$year) {
  12. echo "$fname Zhang. Born in $year <br>";
  13. }
  14.  
  15. familyName("Li","1975");
  16. familyName("Hong","1978");
  17. familyName("Tao","1983");
  18. ?>
  19.  
  20. // 默认参数
  21. <?php
  22. function setHeight($minheight=50) {
  23. echo "The height is : $minheight <br>";
  24. }
  25.  
  26. setHeight(350);
  27. setHeight(); // 将使用默认值 50
  28. setHeight(135);
  29. setHeight(80);
  30. ?>
  31.  
  32. // 返回值
  33. <?php
  34. function sum($x,$y) {
  35. $z=$x+$y;
  36. return $z;
  37. }
  38.  
  39. echo "5 + 10 = " . sum(5,10) . "<br>";
  40. echo "7 + 13 = " . sum(7,13) . "<br>";
  41. echo "2 + 4 = " . sum(2,4);
  42. ?>

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

  • 索引数组 - 带有数字索引的数组
  • 关联数组 - 带有指定键的数组
  • 多维数组 - 包含一个或多个数组的数组

索引数组:

  1. $cars=array("Volvo","BMW","SAAB");
  2. <?php
  3. $cars=array("Volvo","BMW","SAAB");
  4. echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
  5. ?>
  6.  
  7. // count
  8. <?php
  9. $cars=array("Volvo","BMW","SAAB");
  10. echo count($cars);
  11. ?>
  12.  
  13. // 变量索引数组
  14. <?php
  15. $cars=array("Volvo","BMW","SAAB");
  16. $arrlength=count($cars);
  17.  
  18. for($x=0;$x<$arrlength;$x++) {
  19. echo $cars[$x];
  20. echo "<br>";
  21. }
  22. ?>

关联数组:

  1. $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

  2. $age['Peter']="35";
  3. $age['Ben']="37";
  4. $age['Joe']="43";
  5.  
  6. <?php
  7. $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
  8. echo "Peter is " . $age['Peter'] . " years old.";
  9. ?>
  10.  
  11. // 遍历
  12. <?php
  13. $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
  14.  
  15. foreach($age as $x=>$x_value) {
  16. echo "Key=" . $x . ", Value=" . $x_value;
  17. echo "<br>";
  18. }
  19. ?>

数组排序方法有下面这些:

  1. sort() - 以升序对数组排序
  2. rsort() - 以降序对数组排序
  3. asort() - 根据值,以升序对关联数组进行排序
  4. ksort() - 根据键,以升序对关联数组进行排序
  5. arsort() - 根据值,以降序对关联数组进行排序
  6. krsort() - 根据键,以降序对关联数组进行排序

比较难理解的是键值对排序。

  1. <?php
  2. $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
  3. asort($age);
  4. ?>
  5.  
  6. <?php
  7. $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
  8. ksort($age);
  9. ?>

超全局变量,也就是预定义的全局变量,在哪里都能用,有特殊含义:

  1. $GLOBALS:引用全局作用域中可用的全部变量
  2. $_SERVER:保存关于报头、路径和脚本位置的信息。
  3. $_REQUEST:用于收集 HTML 表单提交的数据。
  4. $_POST:用于收集提交 method="post" HTML 表单后的表单数据。也常用于传递变量。
  5. $_GET:$_GET 也可用于收集提交 HTML 表单 (method="get") 之后的表单数据。
  6. $_FILES
  7. $_ENV
  8. $_COOKIE
  9. $_SESSION

其他内容可以在表单处理中找到。

  1.  

PHP:php知识小解的更多相关文章

  1. spring事务管理及相关知识

    最近在项目中遇到了spring事务的注解及相关知识,突然间感觉自己对于这部分知识只停留在表面的理解层次上,于是乎花些时间上网搜索了一些文章,以及对于源码的解读,整理如下: 一.既然谈到事务,那就先搞清 ...

  2. java 基础知识(三)

    Arraylist与Vector的区别 清浅池塘 程序员,专栏:Java那些事儿唯一作者,咨询前请先点详细资料   162 人赞同了该文章 这几天工作有点忙,有很多代码需要写,更新文章有点慢,说声抱歉 ...

  3. 你必须知道的EF知识和经验

    注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...

  4. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  5. 学点HTTP知识

    不学无术 又一次感觉到不学无术,被人一问Http知识尽然一点也没答上来,丢人丢到家了啊.平时也看许多的技术文章,为什么到了关键时刻就答不上来呢? 确实发现一个问题,光看是没有用的,需要实践.看别人说的 ...

  6. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  7. [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?

    你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...

  8. [C#] C# 知识回顾 - 学会处理异常

    学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...

  9. [C#] C# 知识回顾 - 学会使用异常

    学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...

随机推荐

  1. 最小化安装centos7不能执行ifconfig命令的解决方法

    操作环境 虚拟机:VirtualBox 5.0.4 for Windows 操作系统:CentOS-7-x86_64-Minimal-1503-01.iso 问题描述 登录系统之后,输入ifconfi ...

  2. Python学习笔记(三)——类型与变量

    一.输入与输出 print("string"); print("string1","string2","string3" ...

  3. Shell 编程基础之 [ 与 [[ 的异同

    一.简介 [ 与 test 等价,是 bash 的内部命令,GNU/linux 系统的 coreutils 软件包通常带 /usr/bin/test 和 /usr/bin/[ 命令.如果我们不用绝对路 ...

  4. 跟我一起学JQuery插件开发

    http://www.cnblogs.com/Leo_wl/archive/2012/04/06/2435511.html 以前一直比较好奇,jquery插件是怎么开发的,怎么写属于自己的插件? 昨天 ...

  5. spring的Scheduled(定时任务)和多线程

    一.前言 在我们日常的开发中,经常用到数据同步的更新,这时我们采用的是spring的定时任务和java的多线程进行数据的更新,进行时实的服务调用. 二.实现思路            1.创建线程类 ...

  6. poco json 中文字符,抛异常JSON Exception -->iconv 转换 备忘录。

    起因 最近linux服务器通信需要用到json. jsoncpp比较出名,但poco 1.5版本以后已经带有json库,所以决定使用poco::json(linux 上已经用到了poco这一套框架). ...

  7. spark 2.0 Vector toBreeze

    def toBreeze( _v : Vector ) : BZV[Double] = { _v match { case x : org.apache.spark.mllib.linalg.Dens ...

  8. 如何在Android中实现全屏,去掉标题栏效果

    在进行Android UI设计时,我们经常需要将屏幕设置成无标题栏或者全屏.要实现起来也非常简单,主要有两种方法:配置xml文件和编写代码设置.   1.在xml文件中进行配置   在项目的清单文件A ...

  9. 解决echsop兼容jquery(transport.js的冲突)的问题

    方案一: 本人亲测过,可以用.有的人说需要删除js目录下的gobal.js文件,否则依然会冲突.我没删除也解决了冲突. 1.加入JSON2.js文件 原因很简单,transport修改Object是为 ...

  10. 2016.9.20 java上课作业

    此程序从命令行接收多个数字,求和之后输出