PHP:php知识小解
一、什么是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
,代码放置在下面的括号里面:
- <?php
- .......
- ?>
echo
可以打印信息,类似于printf
。
- <?php
- echo "hallo world";
- ?>
每条语句后面用分号";"结尾。
php支持三种注释方式:
- <?php
- // 第一种
- # 第二种
- /*
- 这是
- 多行
- 注释
- */
- ?>
在php中,函数、类、和关键词的大小写都是同一个东西:
- <!DOCTYPE html>
- <html>
- <body>
- <?php
- ECHO "Hello World!<br>";
- echo "Hello World!<br>";
- Echo "Hello World!<br>";
- ?>
- </body>
- </html>
不过所有变量都对大小写敏感,需要区分大小写。
- <?php
- $color="red";
- $Color="black";
- echo "my car is " . $color . "<br>";
- echo "my car is " . $Color . "<br>";
- ?>
上面的例子同时指出了变量定义以及字符串拼接的语法。
变量命名规则:
- PHP 变量规则:
- 变量以 $ 符号开头,其后是变量的名称
- 变量名称必须以字母或下划线开头
- 变量名称不能以数字开头
- 变量名称只能包含字母数字字符和下划线(A-z、0-9 以及 _)
- 变量名称对大小写敏感($y 与 $Y 是两个不同的变量)
变量会在第一次赋值时被创建。无需声明变量的类型。
变量会有三种不同的作用域:
- PHP 有三种不同的变量作用域:
- local(局部)
- global(全局)
- static(静态)
- 函数之外声明的变量拥有 Global 作用域,只能在函数以外进行访问。
- 函数内部声明的变量拥有 LOCAL 作用域,只能在函数内部进行访问。
- 下面的例子测试了带有局部和全局作用域的变量:
- <?php
- $x=5; // 全局作用域
- function myTest() {
- $y=10; // 局部作用域
- echo "<p>测试函数内部的变量:</p>";
- echo "变量 x 是:$x";
- echo "<br>";
- echo "变量 y 是:$y";
- }
- myTest();
- echo "<p>测试函数之外的变量:</p>";
- echo "变量 x 是:$x";
- echo "<br>";
- echo "变量 y 是:$y";
- ?>
运行结果:
- 测试函数内部的变量:
- 变量 x 是:
- 变量 y 是:10
- 测试函数之外的变量:
- 变量 x 是:5
- 变量 y 是:
比较奇怪的就是为什么全局变量不能在局部函数内访问。
其实可以访问,不过需要global关键字的帮助:
- global 关键词用于访问函数内的全局变量。
- 要做到这一点,请在(函数内部)变量前面使用 global 关键词:
- <?php
- $x=5;
- $y=10;
- function myTest() {
- global $x,$y;
- $y=$x+$y;
- }
- myTest();
- echo $y; // 输出 15
- ?>
PHP 同时在名为 $GLOBALS[index] 的数组中存储了所有的全局变量。下标存有变量名。这个数组在函数内也可以访问,并能够用于直接更新全局变量。
- <?php
- $x=5;
- $y=10;
- function myTest() {
- $GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
- }
- myTest();
- echo $y; // 输出 15
- ?>
通常,当函数完成执行后,会删除所有变量。不过,有时我需要不删除某个局部变量。实现这一点需要static:
- <?php
- function myTest() {
- static $x=0;
- echo $x;
- $x++;
- }
- myTest();
- myTest();
- myTest();
- ?>
php中echo和print都能使用,两者的唯一区别是print返回1,echo没有返回值。
strlen函数可以返回字符串的长度。
strpos函数用来确定另外一个字符串的位置:
- <?php
- echo strpos("Hello world!","world");
- ?>
完整的string参考手册.
使用define函数来定义常量:
- <?php
- define("GREETING", "Welcome to W3School.com.cn!");
- echo GREETING;
- ?>
define函数还有第三个参数,用来指定是否大小写敏感。
php的if-else语句和其他语言大同小异,举个例子:
- <?php
- $t=date("H");
- if ($t<"10") {
- echo "Have a good morning!";
- } elseif ($t<"20") {
- echo "Have a good day!";
- } else {
- echo "Have a good night!";
- }
- ?>
switch-case语句:
- <?php
- switch ($x)
- {
- case 1:
- echo "Number 1";
- break;
- case 2:
- echo "Number 2";
- break;
- case 3:
- echo "Number 3";
- break;
- default:
- echo "No number between 1 and 3";
- }
- ?>
while、for语句和其他语言无差别,看看foreach吧:
- <?php
- $colors = array("red","green","blue","yellow");
- foreach ($colors as $value) {
- echo "$value <br>";
- }
- ?>
php的真正力量来自于它的函数,它有1000个内置函数。
用户定义的函数声明以关单 "function" 开头:
- function functionName() {
- 被执行的代码;
- }
举个例子:
- <?php
- function writeMsg() {
- echo "Hello world!";
- }
- writeMsg(); // 调用函数
- ?>
- // 含参数
- <?php
- function familyName($fname,$year) {
- echo "$fname Zhang. Born in $year <br>";
- }
- familyName("Li","1975");
- familyName("Hong","1978");
- familyName("Tao","1983");
- ?>
- // 默认参数
- <?php
- function setHeight($minheight=50) {
- echo "The height is : $minheight <br>";
- }
- setHeight(350);
- setHeight(); // 将使用默认值 50
- setHeight(135);
- setHeight(80);
- ?>
- // 返回值
- <?php
- function sum($x,$y) {
- $z=$x+$y;
- return $z;
- }
- echo "5 + 10 = " . sum(5,10) . "<br>";
- echo "7 + 13 = " . sum(7,13) . "<br>";
- echo "2 + 4 = " . sum(2,4);
- ?>
在 PHP 中,有三种数组类型:
- 索引数组 - 带有数字索引的数组
- 关联数组 - 带有指定键的数组
- 多维数组 - 包含一个或多个数组的数组
索引数组:
- $cars=array("Volvo","BMW","SAAB");
- <?php
- $cars=array("Volvo","BMW","SAAB");
- echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
- ?>
- // count
- <?php
- $cars=array("Volvo","BMW","SAAB");
- echo count($cars);
- ?>
- // 变量索引数组
- <?php
- $cars=array("Volvo","BMW","SAAB");
- $arrlength=count($cars);
- for($x=0;$x<$arrlength;$x++) {
- echo $cars[$x];
- echo "<br>";
- }
- ?>
关联数组:
- $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
- 或
- $age['Peter']="35";
- $age['Ben']="37";
- $age['Joe']="43";
- <?php
- $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
- echo "Peter is " . $age['Peter'] . " years old.";
- ?>
- // 遍历
- <?php
- $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
- foreach($age as $x=>$x_value) {
- echo "Key=" . $x . ", Value=" . $x_value;
- echo "<br>";
- }
- ?>
数组排序方法有下面这些:
- sort() - 以升序对数组排序
- rsort() - 以降序对数组排序
- asort() - 根据值,以升序对关联数组进行排序
- ksort() - 根据键,以升序对关联数组进行排序
- arsort() - 根据值,以降序对关联数组进行排序
- krsort() - 根据键,以降序对关联数组进行排序
比较难理解的是键值对排序。
- <?php
- $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
- asort($age);
- ?>
- <?php
- $age=array("Bill"=>"35","Steve"=>"37","Peter"=>"43");
- ksort($age);
- ?>
超全局变量,也就是预定义的全局变量,在哪里都能用,有特殊含义:
- $GLOBALS:引用全局作用域中可用的全部变量
- $_SERVER:保存关于报头、路径和脚本位置的信息。
- $_REQUEST:用于收集 HTML 表单提交的数据。
- $_POST:用于收集提交 method="post" 的 HTML 表单后的表单数据。也常用于传递变量。
- $_GET:$_GET 也可用于收集提交 HTML 表单 (method="get") 之后的表单数据。
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
其他内容可以在表单处理中找到。
PHP:php知识小解的更多相关文章
- spring事务管理及相关知识
最近在项目中遇到了spring事务的注解及相关知识,突然间感觉自己对于这部分知识只停留在表面的理解层次上,于是乎花些时间上网搜索了一些文章,以及对于源码的解读,整理如下: 一.既然谈到事务,那就先搞清 ...
- java 基础知识(三)
Arraylist与Vector的区别 清浅池塘 程序员,专栏:Java那些事儿唯一作者,咨询前请先点详细资料 162 人赞同了该文章 这几天工作有点忙,有很多代码需要写,更新文章有点慢,说声抱歉 ...
- 你必须知道的EF知识和经验
注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...
- MySQL高级知识- MySQL的架构介绍
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
- 学点HTTP知识
不学无术 又一次感觉到不学无术,被人一问Http知识尽然一点也没答上来,丢人丢到家了啊.平时也看许多的技术文章,为什么到了关键时刻就答不上来呢? 确实发现一个问题,光看是没有用的,需要实践.看别人说的 ...
- java中的字符串相关知识整理
字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...
- [C#] C# 知识回顾 - 你真的懂异常(Exception)吗?
你真的懂异常(Exception)吗? 目录 异常介绍 异常的特点 怎样使用异常 处理异常的 try-catch-finally 捕获异常的 Catch 块 释放资源的 Finally 块 一.异常介 ...
- [C#] C# 知识回顾 - 学会处理异常
学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...
- [C#] C# 知识回顾 - 学会使用异常
学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...
随机推荐
- 最小化安装centos7不能执行ifconfig命令的解决方法
操作环境 虚拟机:VirtualBox 5.0.4 for Windows 操作系统:CentOS-7-x86_64-Minimal-1503-01.iso 问题描述 登录系统之后,输入ifconfi ...
- Python学习笔记(三)——类型与变量
一.输入与输出 print("string"); print("string1","string2","string3" ...
- Shell 编程基础之 [ 与 [[ 的异同
一.简介 [ 与 test 等价,是 bash 的内部命令,GNU/linux 系统的 coreutils 软件包通常带 /usr/bin/test 和 /usr/bin/[ 命令.如果我们不用绝对路 ...
- 跟我一起学JQuery插件开发
http://www.cnblogs.com/Leo_wl/archive/2012/04/06/2435511.html 以前一直比较好奇,jquery插件是怎么开发的,怎么写属于自己的插件? 昨天 ...
- spring的Scheduled(定时任务)和多线程
一.前言 在我们日常的开发中,经常用到数据同步的更新,这时我们采用的是spring的定时任务和java的多线程进行数据的更新,进行时实的服务调用. 二.实现思路 1.创建线程类 ...
- poco json 中文字符,抛异常JSON Exception -->iconv 转换 备忘录。
起因 最近linux服务器通信需要用到json. jsoncpp比较出名,但poco 1.5版本以后已经带有json库,所以决定使用poco::json(linux 上已经用到了poco这一套框架). ...
- spark 2.0 Vector toBreeze
def toBreeze( _v : Vector ) : BZV[Double] = { _v match { case x : org.apache.spark.mllib.linalg.Dens ...
- 如何在Android中实现全屏,去掉标题栏效果
在进行Android UI设计时,我们经常需要将屏幕设置成无标题栏或者全屏.要实现起来也非常简单,主要有两种方法:配置xml文件和编写代码设置. 1.在xml文件中进行配置 在项目的清单文件A ...
- 解决echsop兼容jquery(transport.js的冲突)的问题
方案一: 本人亲测过,可以用.有的人说需要删除js目录下的gobal.js文件,否则依然会冲突.我没删除也解决了冲突. 1.加入JSON2.js文件 原因很简单,transport修改Object是为 ...
- 2016.9.20 java上课作业
此程序从命令行接收多个数字,求和之后输出