<!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——基础语法的更多相关文章

  1. Java学习笔记之---基础语法

    Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...

  2. Hive学习笔记:基础语法

    Hive基础语法 1.创建表 – 用户表 CREATE [EXTERNAL外部表] TABLE [IF NOT EXISTS 是否存在] HUserInfo ( userid int comment ...

  3. 01-Python学习笔记-基础语法

    Python标识符 -d           在解析时显示调试信息 -O           生成优化代码 ( .pyo 文件 ) -S           启动时不引入查找Python路径的位置 - ...

  4. Elasticserach学习笔记-01基础概念

    本文系本人根据官方文档的翻译,能力有限.水平一般,如果对想学习Elasticsearch的朋友有帮助,将是本人的莫大荣幸. 原文出处:https://www.elastic.co/guide/en/e ...

  5. Java学习笔记之基础语法(顺序,条件,循环语句)

    顺序结构:自上而下 条件分支选择结构: if条件语句   1,一旦某一个分支确定执行以后,其他分支就不会执行.if后面的条件必须是boolean类型   2,if  后面如果不加大括号,默认相邻的下一 ...

  6. 【C语言C++编程学习笔记】基础语法,第一个简单的实例编程入门教程!

    C语言/C++编程学习:一个简单的实例 让我们来看一个简单的C语言程序.从下面的程序可以看出编写C语言程序的一些基本特征.   如果你能知道该程序将会在显示器上显示一些内容,那说明你还是知道一些的! ...

  7. java学习笔记之基础语法(一)

    1.java语言基础由关键字.标识符.注释.常量和变量.运算符.语句.函数和数组等组成. 2.1关键字 定义:被java语言赋予了特殊含义的单词 特点:关键字中所有的字母都是小写. 2.2用于定义数据 ...

  8. Java学习笔记之基础语法(数据类型)

    8种基本数据类型    整型:   byte[1字节]          short[2字节]        int[4字节]         long[8字节]      1,四种整型之间的区别:申 ...

  9. Python 学习笔记(基础语法 restful 、 Flask 和 Requests)

    input 函数 #!/usr/bin/env python3 name = input("\n\n按下 enter 键后退出.") print(name) print() 在 p ...

随机推荐

  1. 【基本算法】 KMP文本串模式串的字符串匹配算法

    看了两个晚上的KMP,加上基本的“暴力匹配” 今晚看懂next[j]递归求解时,突然觉得算法真的好美妙,虽然觉悟的晚但晚胜过没有是吧! 我的博客都是应试性的学习笔记,不具备指导性,还是大神们写的好,例 ...

  2. jquey ajax 无刷新提交form

    http://bbs.csdn.net/topics/380237868 $.ajax({ type: "POST", url:ajaxCallUrl, data:$('#your ...

  3. badboy 之 查看回放结果

    在运行脚本时,Badboy提供了Summary功能方便我们监控回放结果状态,如下Summary view: 以下表格对运行情况的各个维度进行解释: 统计点 描述 Played 运行或回放脚本的次数 S ...

  4. OnClientClick="return confirm('确定要删除吗?')"

    OnClientClick="return confirm('确定要删除吗?')"   -----------------------前台代码 OnClientClick用于执行客 ...

  5. 【poj3358】消因子+BSGS 或 消因子+欧拉定理 两种方法

    题意:给你一个分数,求它在二进制下的循环节的长度,还有第一个循环节从哪一位开始. For example, x = 1/10 = 0.0001100110011(00110011)w and 0001 ...

  6. libevent功能使用简介

    http://blog.csdn.net/happyanger6/article/details/7272324 1. 介绍 libevent是一个用来开发可扩展的网络服务器的事件通知函数库.当一个文 ...

  7. java消息队列

    来个个人通俗的解释吧.消息队列,顾名思义 首先是个队列.队列的操作有入队和出队 也就是你有一个程序在产生内容然后入队(生产者) 另一个程序读取内容,内容出队(消费者) 我想你应该是缺乏一个使用场景. ...

  8. 解决IIS应用程序池DefaultAppPool关闭超时错误

    错误系统日志: 为应用程序池“DefaultAppPool”提供服务的进程关闭时间超过了限制.进程 ID 是“3060”. 有关更多信息,请参阅在http://go.microsoft.com/fwl ...

  9. Java-马士兵设计模式学习笔记-观察者模式-OOD 封装event

    把小孩醒来时的具体情况封装成事件类 Test.java class WakenUpEvent{ private long time; private String location; private ...

  10. QT静态编译

    Qt静态编译(链接)和动态编译区别 Qt的静态编译译(其实应该叫链接,不是编译),将各模块编译成静态库,这样在编译自己写的Qt程序时,会将这些静态库编译(链接)到你的EXE文件中去的.Qt的动态编译, ...