PHP学习笔记01——基础语法
<!DOCTYPE html>
<html>
<?php
// 1.使用$加变量名来表示变量,php是弱类型语言,不要求在使用变量前声明,第一次赋值时变量才被创建
$a = 10;
$b = "string";
$c = true;
echo $a;
echo $b;
echo $c;
echo "<br/>"; // 2.var_dump函数用来查看表达式的类型和值
var_dump($a);
var_dump($b);
var_dump($c);
echo "<br/>"; // 3. 用empty()函数检测一个变量是否为空,isset()检测一个变量是否设置,unset()释放一个变量
$var = '';
var_dump(empty($var));
var_dump(isset($var));
$var = 'abc ';
echo $var;
var_dump(isset($var));
unset($var);
var_dump(isset($var));
echo "<br/>"; // 4.php中变量名区分大小写,但内置关键字及自定义函数和类名不区分大小写
$var = "smallvar";
$VAR = "BIGVAR";
ECHO $VAR;
echo $var;
echo "<br/>"; // 5.可变变量,一个变量的变量名可以动态设置
$hi = "hello";
$$hi = "world";
echo "$hello ${$hi}";
echo "<br/>"; // 6.引用赋值,和C++中引用类似,但php中只是关联值,内存上不同体,使用unset仅仅是取消关联,不会释放所有值
$foo = 25;
$foo1 = &$foo;
echo $foo;
echo $foo1;
unset($foo1);
echo $foo;
echo "<br/>"; // 7.PHP数据类型
/* 基础类型四种
* bool型:和C++中差不多,0,空白字符串和"0"以及NULL为FALSE,其他为TRUE
* 整型:前加0是八进制,加0x是十六进制,大于2147483647会被解释为浮点型
* 浮点型:范围在1.7E-38~1.7E+38之间,精确到小数点后15位
* 字符串:字符和字符串都统一当做字符串处理,字符串的三种定义方式如下(单引号,双引号,<<<标识符)
* */
echo '\n\r$foo\\\''; //除了对'和\要使用转义外,其它转义和变量名都是无效的
echo "\n\r$foo\\\'"; //转义都是有效的,可以使用{$foo}将变量分离解析 $str =<<<EOE
<br/>//使用<<<来包括字符串,在<<<之后提供一个标识符表示开始,最后提供一个相同的结束符表示结束,
注意标识符必须要从第一列开始,且除了结束符后的分号外,不能再加任何字符。
EOE;
echo $str;
echo "<br/>"; /* 两种扩展类型,这里简要介绍,后面的章节详述
* 数组:实际上是关联数组,可以用多种方法构造,这里使用array语言构造一个数组
* 对象:用class定义,new实例化,->引用成员变量及函数
* */
$arr = array("foo"=>"bar", 12=>true);
echo $arr["foo"];
echo $arr[12];
echo "<br/>"; class Person{
var $name;
function say(){
echo "Person say my name is $this->name";
}
}
$p = new Person;
$p->name = "TOM";
$p->say();
echo "<br/>"; /* 两种特殊类型
* 资源:保存到外部资源的一个引用,比如文件、数据库、图形画布等
* NULL类型:表示变量为空,直接赋值为NULL、unset后的变量、未声明变量都为NULL
*/
$file_handle = fopen("01.php", "r");
$img_handle = imagecreate(100, 50);
var_dump($file_handle);
var_dump($img_handle);
echo "<br/>"; // 8.类型转换,分为自动类型转换和强制类型转换
/* 自动类型转换的规则:
* 有bool型参与运算时,TRUE转化为1,FALSE转化为0
* NULL转化为0
* integer和float一起运算时,将integer转化为float
* 有字符串和数字型一起运算时,将字符串转化为数字
*/
$a = "100page" + 1.5; //自动类型转换种将字符串转化为数字的例子
echo $a; //输出101.5
echo "<br/>";
/* 强制类型转换有三种方法,如下所示
* 前两种不会改变原变量的类型,只是赋值到新的变量中
* 最后一种方法会改变原变量的类型
*/
$foo = (boolean) 10; //和C++相同,在变量前加(变量类型)
var_dump($foo);
$foo = intval(123.45); //使用intval()、floatval()、strval()进行变量转换
var_dump($foo);
settype($foo, "string");//使用settype(var, type);
var_dump($foo);
echo "<br/>"; // 9.变量类型的测试函数,用gettype()获得函数类型或者is_type()判断是否是某种type
$a = 12;
$b = 12.5;
echo gettype($a);
echo gettype($b);
var_dump(is_int($a));
var_dump(is_float($a));
echo "<br/>"; // 10.常量,用户可以用define自定义变量,用defined函数检测是否定义
define("CON_INT", 100); //常量一旦被定义就不能改变,并且可以在任何地方定义和访问
define("not_big", "hello", true); //传入true表示不区分大小写,否则区分
echo CON_INT; //使用常量不需要使用$符号
var_dump(defined('CON_INT'));
var_dump(defined('con_int'));
var_dump(defined("NOT_BIG"));
echo "<br/>"; // 11.魔术常量,随着位置的改变而改变,名字都是_NAME_,共8个
/* __FILE__ 当前文件名; __LINE__ 当前函数名
* __CLASS__ 当前类名; __METHOD__ 当前对象方法名;
* __FUNCTION__ 当前函数名; __NAMESPACE__ 当前命名空间名;
* __DIR__ 当前目录名; __TRAIT__ Trait 的名字;
*/
echo "当前行: ".__LINE__."<br/>";
echo "当前文件:".__FILE__."<br/>";
echo "当前目录:".__DIR__."<br/>"; // 12.运算符
/* 常用运算符和C++中一样,主要有以下几个运算符不太一样
* . 连接运算符号,用于连接字符串,衍生出 .=操作符
* == 左边操作数灯油右边操作数时返回true(这个操作符时将两个数转成同一类型后比较的)
* === 左边操作数等于右边操作数,并且类型也相同时返回true
* <>或!= 当左边操作数不等于右边操作数时返回true,否则返回false
* !== 当左边操作数不等于右边操作数,或者它们类型不相同时返回true,否则返回false
* `` 反引号,将其中内容作为外壳命令执行,并将其执行信息返回
* @ 错误控制运算符,忽视表达式可能产生的错误信息
* => 数组下标指定符,指定数组的键与值
* instanceof 类型运算符,测定一个对象是否来自指定的对象类
*/
$a = 0;
var_dump($a == "0"); //相等
var_dump($a === "0"); //不相等,类型不一样
echo "<pre>".`dir`."</pre>"; //执行windows的dir命令并输出
@$a = $a / 0; //如果不加@PHP会报错 // 13.语言流程控制结构 ,与C++基本一样,只在break和continue处有所不同
// 用break n语言表示直接跳出n层循环,continue n类似
for($i = 0; ; $i++) {
for ($j = 0; $j < 5; $j++){
if ($j > $i) break;
if ($i == 5) break 2; //直接跳出两层循环
echo $j;
}
}
?>
<br/>
</html>
执行结果
10string1
int(10) string(6) "string" bool(true)
bool(true) bool(true) abc bool(true) bool(false)
BIGVARsmallvar
world world
252525
\n\r$foo\' 25\\'
//使用<<<来包括字符串,在<<<之后提供一个标识符表示开始,最后提供一个相同的结束符表示结束, 注意标识符必须要从第一列开始,且除了结束符后的分号外,不能再加任何字符。
bar1
Person say my name is TOM
resource(3) of type (stream) resource(4) of type (gd)
101.5
bool(true) int(123) string(3) "123"
integerdoublebool(true) bool(false)
100bool(true) bool(false) bool(true)
当前行: 145
当前文件:E:\SWM\XAMPP\htdocs\02base\01.php
当前目录:E:\SWM\XAMPP\htdocs\02base
bool(true) bool(false) 驱动器 E 中的卷是 其他
卷的序列号是 20F1-902E E:\SWM\XAMPP\htdocs\02base 的目录 2013/07/30 18:12 .
2013/07/30 18:12 ..
2013/07/19 17:03 174 .buildpath
2013/07/19 17:03 516 .project
2013/07/29 20:28 .settings
2013/07/21 16:17 5,638 01.php
2013/07/22 16:59 2,232 02.php
2013/07/23 15:25 2,885 03.php
2013/07/29 23:40 10,360 04.php
2013/07/30 21:36 4,925 05.php
2013/07/30 23:04 06
7 个文件 26,730 字节
4 个目录 198,289,969,152 可用字节
001012012301234
PHP学习笔记01——基础语法的更多相关文章
- Java学习笔记之---基础语法
Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...
- Hive学习笔记:基础语法
Hive基础语法 1.创建表 – 用户表 CREATE [EXTERNAL外部表] TABLE [IF NOT EXISTS 是否存在] HUserInfo ( userid int comment ...
- 01-Python学习笔记-基础语法
Python标识符 -d 在解析时显示调试信息 -O 生成优化代码 ( .pyo 文件 ) -S 启动时不引入查找Python路径的位置 - ...
- Elasticserach学习笔记-01基础概念
本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸. 原文出处:https://www.elastic.co/guide/en/e ...
- Java学习笔记之基础语法(顺序,条件,循环语句)
顺序结构:自上而下 条件分支选择结构: if条件语句 1,一旦某一个分支确定执行以后,其他分支就不会执行.if后面的条件必须是boolean类型 2,if 后面如果不加大括号,默认相邻的下一 ...
- 【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!
C语言/C++编程学习:一个简单的实例 让我们来看一个简单的C语言程序.从下面的程序可以看出编写C语言程序的一些基本特征. 如果你能知道该程序将会在显示器上显示一些内容,那说明你还是知道一些的! ...
- java学习笔记之基础语法(一)
1.java语言基础由关键字.标识符.注释.常量和变量.运算符.语句.函数和数组等组成. 2.1关键字 定义:被java语言赋予了特殊含义的单词 特点:关键字中所有的字母都是小写. 2.2用于定义数据 ...
- Java学习笔记之基础语法(数据类型)
8种基本数据类型 整型: byte[1字节] short[2字节] int[4字节] long[8字节] 1,四种整型之间的区别:申 ...
- Python 学习笔记(基础语法 restful 、 Flask 和 Requests)
input 函数 #!/usr/bin/env python3 name = input("\n\n按下 enter 键后退出.") print(name) print() 在 p ...
随机推荐
- 总结 | 如何测试你自己的 RubyGem
如何测试一个Gem gem 开发完了,想要给别人用,那就需要测试啊,测试一个 gem 其实很简单,这里我们用 minitest 为例, rspec 也一样适用.先来看看我们当前这个 gem 的目录结构 ...
- vi编辑器的常见使用技巧
光标移动 在普通模式下, 1.按 h 向左移动光标 按 h + 数字n 可以向右移动 n个字符 比如 h + 5 就是向左移动5个字符 2.按j向下移动光标 3.按k向上移动光标 4.按 l 向 ...
- Treap模板
平衡树总是有用的,set由于过度封装没有办法实现找比x小的元素有多少个,这就显得很不方便了,所以封装了个Treap,万一以后用的着呢- -01 #pragma warning(disable:4996 ...
- POJ 3696 The Luckiest number (欧拉函数,好题)
该题没思路,参考了网上各种题解.... 注意到凡是那种11111..... 22222..... 33333.....之类的序列都可用这个式子来表示:k*(10^x-1)/9进而简化:8 * (10^ ...
- 在linux服务器上装svn版本管理,自动部署代码到项目
在linux服务器上装svn版本管理,自动部署代码到项目 http://bbs.aliyun.com/read/9715.html?spm=5176.7114037.1996646101.1.W3zw ...
- python 安装 管理包 pip
2.7的坑里出不来了,现在已经换到3.4了,不存在下列问题. win7下安装pip http://blog.chinaunix.net/uid-24984661-id-4202194.html ...
- [LeetNode]Sort List
Sort a linked list in O(n log n) time using constant space complexity. 思路:分治+递归. /** * Definition fo ...
- 浅谈Spark Kryo serialization
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3833985.html 最近在使用spark开发过程中发现当数据量很大时,如果cache数据将消耗很多的内 ...
- jq的bind用法
type,[data],function(eventObject)String,Object,Function type: 含有一个或多个事件类型的字符串,由空格分隔多个事件.比如"clic ...
- MongoDB驱动特性检查列表
http://docs.mongodb.org/meta-driver/latest/legacy/feature-checklist-for-mongodb-drivers/ 1. 基本(Essen ...