1,语法

PHP 脚本在服务器上执行,然后将纯 HTML 结果发送回浏览器。PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码

比如下面这个:这是一个简单的 PHP 文件实例,它可以向浏览器输出文本 "Hello World!"

<!DOCTYPE html>
<html>
<body>
<h1>My first PHP page</h1>
<?php
echo "Hello World!";
?> //print也可以表示输出,//表示注释,和#用于注释是一样的。
</body>
</html>

注意:PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。

规则:

  1,PHP 脚本以 <?php 开始,以 ?> 结束

  2,echo 和print都可以表示在浏览器中输出文本

  3,//单行注释,/* 多行注释*/。

2,变量  

<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>

规则:

  1,$后紧跟变量,变量名必须以字母或者下划线字符开始,变量名可以包含:数字,字母和下划线,字母区分大小写

  2,变量用等号赋值,变量在第一次被声明的时候就被创建了。

  3,我们不必向 PHP 声明变量的数据类型。PHP 会根据变量的值,自动把变量转换为正确的数据类型。当然,赋值字符串变量的时候还是需要加引号,比如

<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>

3,作用域

<!DOCTYPE html>
<html>
<body>
<?php
$x=5; //这是函数以外的全局变量
function myTest()
{
global $x; //函数内部想要访问的时候还需要global一下,否则不予显示
$y=10;
echo "test result:";
echo "$x"; //换行符是<br>如果不加换行符,默认连续输出,就像:510hello dahu!
echo "$y";
}
myTest(); //调用函数
echo "Hello dahu!";
?>
</body>
</html>

拓展:PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。

4,static作用域

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。那就要用static标志一下这个变量。

<?php
function myTest()
{
static $y=10; //声明一下,希望函数结束的时候$y的值得以保存,
//以便下次再调用这个函数的时候,$y在上一次运行的基础上继续
$x=5;
echo $x; //每次调用的时候$x都是新的,都是5
echo $y; //$y被调用了三次,每次的值分别是:10,11,12
$y++;
}
myTest();
myTest();
myTest();
?>

注意:该函数依然是局部变量,它不会成为全局变量,再一次调用myTest函数时,$y的值会在上一次调用的基础上继续使用。

5,参数

参数的作用是通过调用代码把值传递给函数,是一个局部变量。

<?php
function myTest($x)
{
echo $x;
}
myTest("hello dahu!");
?>

6,echo和print

echo和print都是输出的,区别在于echo可以输出一个或者多个字符串,速度比较快,而print智能输出一个字符串,而且返回值总是为1;

<?php
$y="hello daqing";
$x="hi dahu";
$z=666;
echo $y,$x,$z,"<br>";
//print $y,$x,$z,"<br>"; print只能输出一个字符串
echo "let me echo $y <br>";
print "let me echo $y <br>";
?>

7,PHP EOF(heredoc)使用说明

PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字串的方法。

<?php
$y="hello daqing";
$a=<<<EOF
<br>
<html><title>untitled document</title>
echo $y //输出形如:echo hello daqing
hello,{$y} //输出形如:hello,hello daqing
EOF;
echo $a
?>
<?php
$name="runoob";
$a= <<<EOF
"abc" $name //输出形如:"abc" runoob
"123"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>
<?php
echo <<<EOF
<h1>我的第一个标题</h1>
<p>我的第一个段落。</p>
EOF;
// 结束需要独立一行且前后不能空格
?> //输出结果:

我的第一个标题

我的第一个段落

注意:上面三行代码的注释部分是后来添加的,不要带着注释去运行

EOF语法:

  1,开始标志:“<<<EOF”后面不加任何东西,包括空格,结束“EOF;”独占一行,没空格。

  2,位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。

  3,.heredoc常用在输出包含大量HTML语法d文档的时候。比如:函数outputhtml()要输出HTML的主页,就可以写成如下格式:(注意,EOF内的html可以被解析。)

function outputhtml()
{
echo <<<EOT
<html>
<head><title>主页</title></head>
<body>主页内容</body>
</html>
EOT;
}
outputhtml();

8,数据类型

String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。

测试函数: var_dump()函数返回变量的数据类型和值。(如果是八进制或者16进制的整数,会自动换算成十进制)

<?php
$s='lala';
var_dump($s);
echo "<br>";
$x=234;
var_dump($x);
?>

我的结果是:C:\xampp\htdocs\daqing_new\daqing_test.php:7:string 'lala' (length=4)

C:\xampp\htdocs\daqing_new\daqing_test.php:10:int

详解:

  1,字符串,放在单双引号里,

  2,整数型,要有数字没有小数点,可正可负,三种格式:十进制,十六进制(0x为前缀),或者八进制(0为前缀)

  3,浮点数,支持科学计数,如:2.4e3=2.4*10的3次方,8E-5=8*10的负5次方

  4,布尔型,$x=true 或者false,通常用于条件判断

  5,数组,array,一组同类型的集合

<?php
$cars=array("Volvo","BMW","Toyota");
var_dump($cars); //输出array (size=3)等详细信息
echo $cars[0] //数组的下标从0开始
?>

  6,对象,对象数据类型也可以用于存储数据。在 PHP 中,对象必须声明。必须使用class关键字声明类对象。类是可以包含属性和方法的结构,我们在类中定义数据类型,然后在实例化的类中使用数据类型。

<?php
class Person {
//人的成员属性
var $name; //人的名字
var $age; //人的年龄 //人的成员 say() 方法
function say() {
echo "我的名字叫:".$this->name."<br>"; //相当于python中的self.name
echo "我的年龄是:".$this->age;
}
} //类定义结束 //实例化一个对象,记得类名前面加上new
$p1 = new Person();
//给 $p1 对象属性赋值
$p1->name = "张三"; //相当于python中的,实例名.类属性名的那种格式
$p1->age = 20;
//调用对象中的 say()方法
$p1->say();
?>

  7,null:NULL 值表示变量没有值。

9,常量

常量值被定义后,在脚本的其他任何地方都不能被改变。一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。

语法:使用函数define()

define ( string $name , mixed $value [, bool $case_insensitive = false ] )

define()的三个参数分别是name,value, 大小写敏感(case_insensitive,默认区分大小写,默认false,如果设置成true,那就表示大小写不区分)

实例:

<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 daqing.com",true);
echo GREETING; // 输出 "欢迎访问 daqing.com"
echo '<br>';
echo greeting; // 输出"欢迎访问 daqing.com",不区分大小写
?>

注意,常量是全局变量,在函数内部也可以毫无障碍的使用。

10 字符串相关的函数:

字符串的运算符:.  并置运算符。

实例:

<?php
$txt1="hello";
$txt2="daqing!";
echo $txt1." ".$txt2; //txt1和空格并置,然后和txt2并置
?>
//结果:hello daqing!

字符串长度函数:strlen()

实例:

<?php
$txt1="hello";
$txt2="daqing!";
echo strlen($txt1); //返回长度5
?>

字符串查找函数:strpos()

strpos() 函数用于在字符串内查找一个字符或一段指定的文本。如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

实例:

<?php
$txt1="hello";
echo strpos($txt1,'e');
?>
//返回‘e'所在的位置1。

11 运算符

基本运算符:+,-,*,/,%,.,加减乘除取余,并置。

注意,它的除法不是地板除。php7版本新增了整除函数,intdiv(),用法:echo (intdiv(10,3));

实例:

<?php
$x=10;
$y=6;
echo ($x + $y); // 输出16
echo '<br>'; // 换行
echo ($x - $y); // 输出4
echo '<br>'; // 换行
echo ($x * $y); // 输出60
echo '<br>'; // 换行
echo ($x / $y); // 输出1.6666666666667
echo '<br>'; // 换行
echo ($x % $y); // 输出4
echo '<br>'; // 换行
echo -$x; //输出-10
?>

赋值运算符:和python差不多

运算符 等同于 描述
x = y x = y 左操作数被设置为右侧表达式的值
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x = x / y
x %= y x = x % y 模(除法的余数)
a .= b a = a . b 连接两个字符串

实例:

<?php
$x=10;
echo $x; // 输出10
$y=20;
$y += 100;
echo $y; // 输出120
$z=50;
$z -= 25;
echo $z; // 输出25
$i=5;
$i *= 6;
echo $i; // 输出30
$j=10;
$j /= 5;
echo $j; // 输出2
$k=15;
$k %= 4;
echo $k; // 输出3
?>

递增/递减运算符:

运算符 名称 描述
++ x 预递增 x 加 1,然后返回 x
x ++ 后递增 返回 x,然后 x 加 1
-- x 预递减 x 减 1,然后返回 x
x -- 后递减 返回 x,然后 x 减 1

实例;

<?php
$t=10;
echo ++$t; //$t是递增的,$t每次+1赋值给自己。返回11
echo "<br>";
$s=10;
echo --$s; //$t是递减的,每次-1赋值给自己,返回9
?>

比较运算符:

运算符 名称 描述 实例
x == y 等于 如果 x 等于 y,则返回 true 5==8 返回 false
x === y 绝对等于 如果 x 等于 y,且它们类型相同,则返回 true 5==="5" 返回 false
x != y 不等于 如果 x 不等于 y,则返回 true 5!=8 返回 true
x <> y 不等于 如果 x 不等于 y,则返回 true 5<>8 返回 true
x !== y 绝对不等于 如果 x 不等于 y,或它们类型不相同,则返回 true 5!=="5" 返回 true
x > y 大于 如果 x 大于 y,则返回 true 5>8 返回 false
x < y 小于 如果 x 小于 y,则返回 true 5<8 返回 true
x >= y 大于等于 如果 x 大于或者等于 y,则返回 true 5>=8 返回 false
x <= y 小于等于 如果 x 小于或者等于 y,则返回 true 5<=8 返回 true

实例:

<?php
$x=100;
$y="100";
var_dump($x == $y); //返回true
echo "<br>";
var_dump($x === $y); //绝对等于,如果 x 等于 y,且它们类型相同,则返回 true,执行结果false
echo "<br>";
var_dump($x != $y); //返回false
echo "<br>";
var_dump($x !== $y); //返回true,绝对不等于还要判断他们的类型是否相同
echo "<br>";
$a=50;
$b=90;
var_dump($a > $b); //返回false
echo "<br>";
var_dump($a < $b); //返回true
?>

 逻辑运算符:

 数组运算符:

运算符 名称 描述
x + y 集合 x 和 y 的集合
x == y 相等 如果 x 和 y 具有相同的键/值对,则返回 true
x === y 恒等 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true
x != y 不相等 如果 x 不等于 y,则返回 true
x <> y 不相等 如果 x 不等于 y,则返回 true
x !== y 不恒等 如果 x 不等于 y,则返回 true

实例:

<?php
$x = array("a" => "red", "b" => "green");
$y = array("c" => "blue", "d" => "yellow");
$z = $x + $y; // $x 和 $y 数组合并
var_dump($z); //数组不好打印,用var_dump()看吧
var_dump($x == $y);
var_dump($x === $y);
var_dump($x != $y);
var_dump($x <> $y);
var_dump($x !== $y);
?>
//返回值依次是:
//array(4) { ["a"]=> string(3) "red" ["b"]=> string(5) "green" ["c"]=> string(4) "blue" ["d"]=> string(6) "yellow" } //bool(false) bool(false) bool(true) bool(true) bool(true)

三元运算符

语法:

(expr1) ? (expr2) : (expr3) 

意思是:expr1 值为 TRUE 时执行 expr2,expr1 求值为 FALSE 时执行 expr3。

实例:

<?PHP
$a=10; $b=20;
$c=$a>$b?($a-$b):($a+$b);
//说明:如果变量a大于变量b则执行问号后面的,否则就执行:冒号后面的
echo $c;
?>

当然写得长一点也没问题,比如:$a>$b ? $x=($a<$c ? $c-$a : $a-$c) : $x=($b<$c ? $c-$b : $b-$c);

组合比较符:

语法:$a<=>$b
如果$a > $b, 返回的值为1 
如果$a == $b, 返回的值为0 
如果$a < $b, 返回的值为-1

组合比较符也适用于字符串,字符串比较的时候,b大于a。和python一样。

运算优先级表:

下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

  说明:运算的时候,左 = 从左到右,右 = 从右到左。

运算方向 运算符 附加信息
clone new clone 和 new
[ array()
++ -- ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减
instanceof 类型
! 逻辑运算符
* / % 算术运算符
+ – . 算术运算符和字符串运算符
<< >> 位运算符
== != === !== <> 比较运算符
& 位运算符和引用
^ 位运算符
| 位运算符
&& 逻辑运算符
|| 逻辑运算符
? : 三元运算符
= += -= *= /= .= %= &= |= ^= <<= >>= => 赋值运算符
and 逻辑运算符
xor 逻辑运算符
or 逻辑运算符
, 多处用到

括号的使用:

在php中,运算的时候,括号优先运算。

php编程 之 php基础一的更多相关文章

  1. C++ STL编程轻松入门基础

    C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...

  2. ubuntu下C编程,编译基础( 转)

    buntu下C编程,编译基础     C 编程中相关文件后缀 .a 静态库 (archive) .c C源代码(需要编译预处理) .h C源代码头文件 .i C源代码(不需编译预处理) .o 对象文件 ...

  3. (C#)Windows Shell 编程系列1 - 基础,浏览一个文件夹

    原文 (C#)Windows Shell 编程系列1 - 基础,浏览一个文件夹 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) Windows Shell 编程,即 Windows ...

  4. async And await异步编程活用基础

    原文:async And await异步编程活用基础 好久没写博客了,时隔5个月,奉上一篇精心准备的文章,希望大家能有所收获,对async 和 await 的理解有更深一层的理解. async 和 a ...

  5. 量子计算机编程(二)——QPU基础函数

    第二部分主要是QPU的基础功能,第一部分就像是我们有了哪些基本的语句,第二部分就是我们能写一些简单基础的函数,一些小模块,第三部分就是他的应用了. 先来看一下一个简单量子应用的结构: 第一步,将量子态 ...

  6. Python网络编程之网络基础

    Python网络编程之网络基础 目录 Python网络编程之网络基础 1. 计算机网络发展 1.1. OSI七层模型 1.2. 七层模型传输数据过程 2. TCP/IP协议栈 2.1 TCP/IP和O ...

  7. IOS编程User Interface基础

    IOS编程之User Interface基础 目录 概述 相关概念 常见问题 状态栏的隐藏 应用图标的设置 概述 IOS用户界面是APP呈现给用户最直观.最常用的方式,因此学会用户界面的编程是学习IO ...

  8. 电脑小白自学软件编程-.Net语法基础之循环语句,纯技巧干货

    写代码也要读书,爱全栈,更爱生活.每日更新原创IT编程技术及日常实用视频. 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是不在话下. 本教程是基础教程,适合任何有志于学习软件开发的 ...

  9. async 与 await异步编程活用基础

    [本文转自:http://www.cnblogs.com/x-xk/archive/2013/06/05/3118005.html  作者:肅] 好久没写博客了,时隔5个月,奉上一篇精心准备的文章,希 ...

  10. shell编程技术之-基础知识

    一.脚本结构 linux下shell的脚本,是将一系列命令序列写在一个文本文件,而这个文本文件时可执行的.相对命令行来说,开发效率提高.因此他的构架有2部分构成#!和命令序列.其中#!指明此脚本是用哪 ...

随机推荐

  1. 做错的题目——给Array附加属性

  2. MySQL5.7延迟复制半同步复制

    MySQL5.7延迟复制半同步复制 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.延迟复制 1>.什么是延迟复制 延迟复制是指定从库对主库的延迟至少是指定的这个间隔时间 ...

  3. python 线程(其他方法,队列,线程池,协程 greenlet模块 gevent模块)

    1.线程的其他方法 from threading import Thread,current_thread import time import threading def f1(n): time.s ...

  4. C#设计模式(14)——模板方法模式

    1.模板方法模式介绍 提到模板我们经常会想到简历模板/PPT模板等,以简历模板为例,不同的人可以使用一样的简历模板,在填充内容时根据自己的名字/工作经历等填写自己的内容,从而形成不同的简历.在OO中模 ...

  5. js中html拼接

    https://i.cnblogs.com/EditPosts.aspx?postid=10620765&update=1

  6. c/c++gdb下和发布版本下输出地址不同

    相差4字节 相差8个字节 原因: 这4个字节是优化掉了,64位操作系统,函数传参通过寄存器,减少了栈的使用 debug模式下,abc的地址都存下来了.

  7. 自学python 5.

    1.tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "na ...

  8. Elasticsearch入门实践

    官网:https://www.elastic.co/ 下载:https://www.elastic.co/downloads/elasticsearch 文档:https://www.elastic. ...

  9. Vertica系列:从一些细节看Vertica为什么是一个优秀的数据仓库平台

    ===========================================对象名称可以长到128字符===========================================1 ...

  10. nginx接入let's encrypt

    按以下步骤: 一.放开443端口 我的是云服务器,默认没开放443端口,需要先在控制台放开 二.使用let’s encrypt 生成证书 执行以下命令: git clone https://githu ...