php编程 之 php基础一
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基础一的更多相关文章
- C++ STL编程轻松入门基础
C++ STL编程轻松入门基础 1 初识STL:解答一些疑问 1.1 一个最关心的问题:什么是STL 1.2 追根溯源:STL的历史 1.3 千丝万缕的联系 1.4 STL的不同实现版本 2 牛刀小试 ...
- ubuntu下C编程,编译基础( 转)
buntu下C编程,编译基础 C 编程中相关文件后缀 .a 静态库 (archive) .c C源代码(需要编译预处理) .h C源代码头文件 .i C源代码(不需编译预处理) .o 对象文件 ...
- (C#)Windows Shell 编程系列1 - 基础,浏览一个文件夹
原文 (C#)Windows Shell 编程系列1 - 基础,浏览一个文件夹 (本系列文章由柠檬的(lc_mtt)原创,转载请注明出处,谢谢-) Windows Shell 编程,即 Windows ...
- async And await异步编程活用基础
原文:async And await异步编程活用基础 好久没写博客了,时隔5个月,奉上一篇精心准备的文章,希望大家能有所收获,对async 和 await 的理解有更深一层的理解. async 和 a ...
- 量子计算机编程(二)——QPU基础函数
第二部分主要是QPU的基础功能,第一部分就像是我们有了哪些基本的语句,第二部分就是我们能写一些简单基础的函数,一些小模块,第三部分就是他的应用了. 先来看一下一个简单量子应用的结构: 第一步,将量子态 ...
- Python网络编程之网络基础
Python网络编程之网络基础 目录 Python网络编程之网络基础 1. 计算机网络发展 1.1. OSI七层模型 1.2. 七层模型传输数据过程 2. TCP/IP协议栈 2.1 TCP/IP和O ...
- IOS编程User Interface基础
IOS编程之User Interface基础 目录 概述 相关概念 常见问题 状态栏的隐藏 应用图标的设置 概述 IOS用户界面是APP呈现给用户最直观.最常用的方式,因此学会用户界面的编程是学习IO ...
- 电脑小白自学软件编程-.Net语法基础之循环语句,纯技巧干货
写代码也要读书,爱全栈,更爱生活.每日更新原创IT编程技术及日常实用视频. 我们的目标是:玩得转服务器Web开发,搞得懂移动端,电脑客户端更是不在话下. 本教程是基础教程,适合任何有志于学习软件开发的 ...
- async 与 await异步编程活用基础
[本文转自:http://www.cnblogs.com/x-xk/archive/2013/06/05/3118005.html 作者:肅] 好久没写博客了,时隔5个月,奉上一篇精心准备的文章,希 ...
- shell编程技术之-基础知识
一.脚本结构 linux下shell的脚本,是将一系列命令序列写在一个文本文件,而这个文本文件时可执行的.相对命令行来说,开发效率提高.因此他的构架有2部分构成#!和命令序列.其中#!指明此脚本是用哪 ...
随机推荐
- 做错的题目——给Array附加属性
- MySQL5.7延迟复制半同步复制
MySQL5.7延迟复制半同步复制 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.延迟复制 1>.什么是延迟复制 延迟复制是指定从库对主库的延迟至少是指定的这个间隔时间 ...
- python 线程(其他方法,队列,线程池,协程 greenlet模块 gevent模块)
1.线程的其他方法 from threading import Thread,current_thread import time import threading def f1(n): time.s ...
- C#设计模式(14)——模板方法模式
1.模板方法模式介绍 提到模板我们经常会想到简历模板/PPT模板等,以简历模板为例,不同的人可以使用一样的简历模板,在填充内容时根据自己的名字/工作经历等填写自己的内容,从而形成不同的简历.在OO中模 ...
- js中html拼接
https://i.cnblogs.com/EditPosts.aspx?postid=10620765&update=1
- c/c++gdb下和发布版本下输出地址不同
相差4字节 相差8个字节 原因: 这4个字节是优化掉了,64位操作系统,函数传参通过寄存器,减少了栈的使用 debug模式下,abc的地址都存下来了.
- 自学python 5.
1.tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "na ...
- Elasticsearch入门实践
官网:https://www.elastic.co/ 下载:https://www.elastic.co/downloads/elasticsearch 文档:https://www.elastic. ...
- Vertica系列:从一些细节看Vertica为什么是一个优秀的数据仓库平台
===========================================对象名称可以长到128字符===========================================1 ...
- nginx接入let's encrypt
按以下步骤: 一.放开443端口 我的是云服务器,默认没开放443端口,需要先在控制台放开 二.使用let’s encrypt 生成证书 执行以下命令: git clone https://githu ...