php简明学习笔记
1.变量
<?php
//变量声明(php变量无需单独创建,变量会在第一次赋值时创建)
$a = 1;
//弱类型(php变量会根据其值自动转换为相应的数据类型)
$a = "a";
$A = 2.0;
//命名规则(大小写敏感,建议采用小驼峰方式并增加三字节的类型前缀)
$strName = "张伟佩";
$intAge = 24;
//作用域
function sayHi(){
$strLocal = "小明";
echo $strName." say hi"; // say hi
echo $strLocal." say hi"; // 小明 say hi
//Global作用域只能在函数外进行访问,若在函数内访问可以通过以下两种方式
//1.在变量前加global关键字
global $strName;
echo $strName." say hi"; // 张伟佩 say hi
//2.通过数组$GLOBALS[index],该数组已键值对形式存放了所有全局变量
echo $GLOBALS['intAge']; //24
}
sayHi();
?>
2.运算符
常规运算符
= + - * / % += *= ++ --
字符加
.
<?php
//字符连接符
$str1 = "hello";
echo $str1." world"; //hello world
//a.=b 即 a = a.b
$str2 = " world";
$str1.=$str2; //$str1 = $str1.$str2;
echo $str1; //hello world
?>
- 比较运算符
<?php
$a = "1";
$b = 1;
//“==” 判断两个变量数值是否相等
var_dump($a == $b); //bool(true)
//“===”判断两个变量数值和类型是否都一致
var_dump($a === $b); //bool(false)
//由于php变量具有弱类型,两变量若类型不同,比较时具有一定规则
//first 存在bool的都转为bool,true > false
var_dump(true > 0); //bool(true)
//next 存在数字,均转为数字
var_dump("12" > 2); //bool(true)
var_dump(1 > "a"); //bool(true)
var_dump('f' > 2); //bool(false)
//next 均为数字字符串则转为数字比较
var_dump("12" > "110"); //bool(fase)
//last 按字符串比较
var_dump("a1" < "b"); //false
?>
3.数组
<?php
//数组声明通过array关键词,除定义常规数组外还可以通过=>来声明键值对数组
$arrCars = array("bmw","volvo","audi","volvo");
$arrAges = array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
//数组遍历
//1.for
for($i = 0;$i < count($arrCar);$i++){
echo $arrCar[$i];
}
//2.foreach
foreach($arrCars as $car){
echo $car;
}
foreach($arrAges as $key => $value){
echo $key."'s age is ".$value;
}
//3.指针
reset($arrAges);
while(list($key,$val)= each($arrAges)) {
echo "$key=> $val<br />";
}
//常用数组方法
count($arrCar); //返回数组大小,4
sort($arrCar); //排序,按元素内容正向排序,【"audi","bmw","volvo","volvo"】
usort($arrCar,"mySortFunc"); //根据自定义函数进行排序
array_unique($arrCar); //移除重复元素,【"audi","bmw","volvo"】
array_push($arrCar,"tesla"); //入栈元素,【"audi","bmw","volvo","tesla"】
array_shift($arrCar); //删除并返回数组首个元素,【"bmw","volvo","tesla"】
array_map("myMapFunc",$arrCar); //对数组内每个元素执行自定义函数
?>
4.字符串函数
- strlen(str) 返回字符串str长度
<?php
$strName = "HelloWorld";
echo strlen(strName); //10
?>
- strpos(str,subStr) 返回子串subStr在str的位置
<?php
$strName = "Hello World";
echo strpos(strName,"World"); //6
?>
- explode() 将字符串转换为数组
<?php
$arrWords = explode(" ","Hello World");
var_dump($arrWords); //array(0 => "Hello",1 => "World")
//implode与explode相对,将数组转换为字符串,别名join
echo implode(" ",$arrWords); //"Hello World"
?>
- strcmp($str1,$str2) 比较两字符串的大小
<?php
$str1 = "hello";
$str2 = "world";
if(strcmp($str1,$str2) > 0)
echo "$str1大于$str2";
?>
5.类与对象
<?php
//通过Class关键字声明类,封装了相关的成员属性和方法
Class Person{
//类的属性
public $name;
//类构造函数
function __construct($n){
$this->name = $n;
}
//【public】公有方法,在各个位置均可访问
public function sayHi(){
echo "hi,my name is ".$this->name;
}
//【private】私有方法,只有在本类中访问
private function temp(){
echo "here in Person";
}
}
//子类(通过extends关键字继承父类中修饰符为public和protected的属性和方法,php中为单继承,父类仅有一个)
Class Programmer extends Person{
public $type;
//当子类中可以声明与父类中同名的方法,该方法具有与父类不同的功能,称为重载
function __construct($n,$t){
//当需要调用父类中方法时,通过parent::funcName来访问
parent::__construct($n);
//$this是类中自带的指针,指向当前调用该方法的对象
$this->type = $t;
}
public function sayType()
{
echo "I'm a ".$this->type;
}
}
//通过new关键字声明子类对象
$objPgm = new Programmer("zhangweipei","rd");
//调用父类继承的方法
$objPgm->sayHi(); //hi,my name is zhangweipei
//调用自身方法
$objPgm->sayType(); //I'm a rd
//父类中private方法无法被继承,因此下面调用报错
$objPgm->temp(); //Fatal error
?>
6.魔术方法
在类中具有“魔术功能”的一些特定方法称为魔术方法,通常以__开头,常见的魔术方法除上面见到的__construct外还有__set、__get、__call等
| 方法 | 说明 | 语法 |
|---|---|---|
| __construct | 构造函数,创建对象时 | public void __construct (mixed $value) |
| __set | 在给不可访问属性赋值时 | public void __set ( string $name , mixed $value ) |
| __get | 读取不可访问属性的值时 | public mixed __get ( string $name) |
| __call | 在对象中调用一个不可访问方法时 | public mixed __call ( string $name , array $arguments ) |
<?php
Class Person{
private $name = "defalutName";
public function sayHi(){
echo "hi,my name is ".$this->name."\n";
}
private function temp(){
echo "Inside in Person";
}
//在给不可访问属性赋值时
public function __set($name , $value){
echo "you're setting ".$name." to ".$value."\n";
}
//读取不可访问属性的值时
public function __get($name){
echo "you're getting ".$name."\n";
}
//在对象中调用一个不可访问方法时
public function __call($name , $arguments)
{
echo "you're calling function ".$name." with arguments ".implode(",", $arguments)."\n";
}
}
$objP = new Person();
echo $objP->name; //you're getting name
$objP->sayHi(); //hi,my name is defalutName
$objP->name = "Lee"; //you're setting name to Lee
$objP->temp("arg1","arg2"); //you're calling function temp with arguments arg1,arg2
?>
7.文件操作
<?php
//打开文件,第一个参数为文件路径,第二个为打开模式,
//常见的打开模式有r只读、w只写、r只写(追加)、x只写(文件不存在时不新建)、r+读写等
$fileHandle = fopen("test.txt","a+");
//全读
$strContent = fread($fileHandle,filesize("test.txt"));
//逐行读
while(!feof($fileHandle)){
$strLine = fgets($fileHandle);
}
//写文件
fwrite($fileHandle,"hello world\n");
//关闭文件
fclose($fileHandle);
?>
8.异常处理
当异常发生时,若未被捕获或执行相应处理将导致严重错误而中断程序,通过异常处理方法可以捕获异常并执行相应的逻辑
<?php
//handleArr方法仅接受array类型的参数,否则便抛出异常
function handleArr($arr)
{
if(!is_array($arr)){
//Exception为php内置的异常类,接受两个参数,第一个为错误信息,第二个为错误代码
//也自定义继承系统Exception类的异常类,然后在catch中调用自定义方法
throw new Exception("param is not array", 1);
}
# some code handle with arr
}
try {
$intTemp = 1;
//传入整形参数,触发异常
handleArr($intTemp);
}
//捕捉异常
catch (Exception $e) {
//Exception中的常用方法有
echo $e->getCode(); //返回错误代码
echo $e->getMessage(); //返回错误信息
echo $e->getFile(); //返回代码文件的完整路径
echo $e->getLine(); //返回代码文件中产生异常的代码行号
}
?>
9.系统变量
| 变量 | 说明 |
|---|---|
| $GLOBALS | 全局作用域中可用的变量 |
| $_SERVER | 服务器及执行环境的信息 |
| $_GET | 通过 URL 参数传递给当前脚本的变量的数组 |
| $_POST | 通过Post方式传递给当前脚本的变量的数组 |
| $_COOKIE | 通过 HTTP Cookies 方式传递给当前脚本的变量的数组 |
Reference:
http://www.w3school.com.cn/php/
http://php.net/docs.php
PHP和MySql Web开发[book]
博文作者:vicfeel
博文出处:http://www.cnblogs.com/vicfeel
本文版权归作者和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作!
如果阅读了本文章,觉得有帮助,您可以为我的博文点击“推荐一下”!
php简明学习笔记的更多相关文章
- 学习笔记《简明python教程》
学习笔记<简明python教程> 体会:言简意赅,很适合新手入门 2018年3月14日21:45:59 1.global 语句 在不使用 global 语句的情况下,不可能为一个定义于函数 ...
- Node.js学习笔记(3):NPM简明教程
Node.js学习笔记(3):NPM简明教程 NPM常用操作 更新NPM版本 npm install npm -g -g,表示全局安装.我们可以指定更新版本,只需要在后面填上@版本号即可,也可以输入@ ...
- Node.js学习笔记(4):Yarn简明教程
Node.js学习笔记(4):Yarn简明教程. 引入Yarn NPM是常用的包管理工具,现在我们引入是新一代的包管理工具Yarn.其具有快速.安全.可靠的特点. 安装方式 使用npm工具安装yarn ...
- Java超简明入门学习笔记(一)
Java编程思想第4版学习笔记(一) 第二章 一切都是对象(Hello World) 这个笔记本主要记录了我在学习Java编程思想(第4版,中文版)的过程中遇到的重难点及其分析.主要 ...
- Java超简明入门学习笔记(四)
Java编程思想第4版学习笔记(四) 第六章 访问权限控制 访问权限控制是面向对象编程中的重要概念,它划分了类设计者和类使用者的界限.通过设置权限,它一方面告诉类设计者,哪个部分的修改 ...
- Java超简明入门学习笔记(三)
Java编程思想第4版学习笔记(三) 第五章 初始化与清理(构造器和垃圾回收机制) Java有和C++类似的构造函数来为新创建的对象执行初始化及完成一些特殊的操作,有的类数据成员可能会 ...
- Java超简明入门学习笔记(二)
Java编程思想第4版学习笔记(二) 第三章 操作符 & 第四章 控制执行流程(流程控制语句) 第三章和第四章的内容主要是讲操作符和流程控制语句,Java的大多数操作符和流程控 ...
- Java超简明入门学习笔记(零)
Java编程思想第4版学习笔记(零) 前言 这个笔记本主要记录了我在学习Java编程思想(第4版,中文版)的过程中遇到的重难点及其分析.主要参考了C++11版本的C++语言,对比了它 ...
- Git学习笔记(10)——搭建Git服务器
本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
随机推荐
- 全景智慧城市——VR全景,开启VR营销新时代
全景是一种新兴的富媒体技术. 与视频.声音.图片等传统主流媒体最大的区别是"可操作,可交互". 全景给人以三维立体感觉的实景360°全方位图像,此图像最大的三个特点: 全方位:展示 ...
- 浅谈MVC数据验证
一.一般情况 对于使用过MVC框架的人来说,对MVC的数据验证不会陌生,比如,我有一个Model如下: public class UserInfo { [Required(ErrorMessage = ...
- 运行容器的最佳实践 - 每天5分钟玩转 Docker 容器技术(24)
按用途容器大致可分为两类:服务类容器和工具类的容器. 1. 服务类容器以 daemon 的形式运行,对外提供服务.比如 web server,数据库等.通过 -d 以后台方式启动这类容器是非常合适的. ...
- Java File类应用:递归遍历文件夹和递归删除文件
要求: 1)采用递归遍历文件夹下的所有文件,包括子文件夹下的文件 2)采用递归删除文件下的所有文件 注意: 以下递归删除文件的方法,只能删除文件,所有的文件夹都还会存在 若要删除正文文件夹,可以在递归 ...
- window maven批量删除.lastUpdated文件
当下载网络上的jar包 网络不通 中途中断 会产生.lastUpdated,maven就不在从网上下载jar包了 很烦 ~~~ 执行下面的批处理程序即可 @echo off set REPOSITOR ...
- java数据结构(二叉树)
Node节点: public class Node { public long data; public String sData; public Node leftChild; public Nod ...
- 浅谈JavaScript递归
递归:是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象.递归指的是一个过程:函数不断引用自身,直到引用的对象已知. //公园里面有200个桃子,每天吃掉一半,扔掉一个烂的,第6天 ...
- Spring事务管理—aop:pointcut expression解析
先来看看这个spring的配置文件的配置: <!-- 事务管理器 --> <bean id="transactionManager" class="o ...
- 2017最新xcode打包APP详细图文
网上的xcode打包ipa教程大多太旧而且又不完整,所以整理了一个最新的完整详细的xcode打包APP的图文教程分享给小白到大神路上前进的你我. xcode打包IPA包之前先申请iOS证书,然后导入证 ...
- php提示php_network_getaddresses: getaddrinfo failed: Name or service not known
php_network_getaddresses: getaddrinfo failed: Name or service not known 面对这个错误,已经相对熟悉了.想起来应该是服务器无法访问 ...