<!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. Android屏幕适应详解(二)

    android应用自适应多分辨率的解决方法 1. 首先是建立多个layout文件夹(drawable也一样).  在res目录下建立多个layout文件夹,文件夹名称为layout-800x480等. ...

  2. js:字符串(string)转json

    第一种方式: 使用js函数eval(); testJson=eval(testJson);是错误的转换方式. 正确的转换方式需要加(): testJson = eval("(" + ...

  3. JavaPersistenceWithHibernate第二版笔记-第五章-Mapping value types-005控制类型映射(Nationalized、@LOB、@org.hibernate.annotations.Type)

    一.简介 1. 2. 3. 4. to override this default mapping. The JPA specification has a convenient shortcut a ...

  4. sin=in.readLine();

    import java.io.*; public class LineIO{ public static void main(String[] args) { String sin,inputStri ...

  5. C#之你懂得的反射

    前言:反射在C#中虽然不常用(如果不需要动态加载xx.dll),但是有时候却是设计某个程序或者完成某类功能比较好用的技术.比如:一个支持动态扩展的程序,这样就需要动态加载dll,动态创建加载dll的程 ...

  6. MyBatis学习总结_18_MyBatis与Hibernate区别

    也用了这么久的Hibernate和MyBatis了,一直打算做一个总结,就他们之间的优缺点说说我自己的理解: 首先,Hibernate是一个ORM的持久层框架,它使用对象和我们的数据库建立关系,在Hi ...

  7. Netty4.x中文教程系列(二) Hello World !

    在中国程序界.我们都是学着Hello World !慢慢成长起来的.逐渐从一无所知到熟悉精通的. 第二章就从Hello World 开始讲述Netty的中文教程. 首先创建一个Java项目.引入一个N ...

  8. 笔记二、本地git命令

    参考书籍:     <Pro Git>中文版.pdf   git init           // 建立一个git仓库, 本地目录为工作目录, .git目录是中央数据目录 git ini ...

  9. C# 获取打印机状态

    public static string GetPrinterStatus(string PrinterName)    {    int intValue = GetPrinterStatusInt ...

  10. PostgreSQL删除表

    PostgreSQL的DROP TABLE语句是用来删除表定义及其所有相关的数据表的索引,规则,触发器和约束. 必须使用此命令时要小心,因为一旦一个表被删除表中提供的所有信息也将被永远失去了. 语法: ...