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小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...
随机推荐
- 关于MS12-020一次简单尝试
由于之前着重于web漏洞,主机漏洞这块比较薄弱.也没有用过metasploit,对于很多系统漏洞还不熟悉,正好这几天不忙,就想着慢慢学习,再写点简单的东西,进行总结记录. 这次尝试的是MS12-020 ...
- Canvas学习系列一:初识canvas
最近你开始在学习canvas,打算把学习canvas的整个学习过程当中的一些笔记与总结记录下来,如有什么不足之处还请大神们多多指出. 1. 认识canvas Canvas元素的出现,可以说开启的Web ...
- 初始化CSS
为什么要初始化CSS? 建站老手都知道,这是为了考虑到浏览器的兼容问题,其实不同浏览器对有些标签的默认值是不同的,如果没对CSS初始化往往会出现浏览器之间的页面差异.当然,初始化样式会对SEO有一定的 ...
- qt编译的基于xlib cairo的桌面程序
在*.pro中添加以下代码: INCLUDEPATH += /usr/include/cairo LIBS += -lX11 -lcairo 在ubuntu16下编译通过
- 《Python编程从入门到实践》_第四章_操作列表
for循环遍历整个列表 pizzas = ['pizzahut','dicos','KFC'] for pizza in pizzas: print ("I like "+ piz ...
- 常见web容器
当前主流的还是tomcat,jetty有较大的潜力,缩小彼此间差距,
- vue init webpack-simple project 报错处理(connect ETIMEDOUT 192.30.253.112)
Failed to download repo vuejs-templates/webpack-simple: connect ETIMEDOUT 192.30.253.113:443 Failed ...
- 使用HttpClient 调用Web Api
C#4.5 添加了异步调用Web Api . 如果你的项目是4.5以上版本,可以直接参考官方文档. http://www.asp.net/web-api/overview/web-api-client ...
- 关于getHTML()方法和getHtmlAjax()方法 GetHttpLength, 清除HTML标签
public string getHtml(string Url, string type = "UTF-8") { try { System.Net.WebRequest wRe ...
- CNN压缩:为反向传播添加mask(caffe代码修改)
神经网络压缩的研究近三年十分热门,笔者查阅到相关的两篇博客,博主们非常奉献的提供了源代码,但是发发现在使用gpu训练添加mask的网络上,稍微有些不顺,特此再进行详细说明. 此文是在 基于Caffe的 ...