PHP极基本语法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP极基本语法相关的知识,希望对你有一定的参考价值。
最近开始学php这门“世界上最好的语言”(非黑,程序员都知道这个梗)。在某大神同学的介绍下,让我先去W3Cschool看看。这几天拖着看完了“PHP教程”栏的部分,发现有编程语言基础后学习php的语法简直轻而易举,很多东西一看就懂。现在写个东西,简单记录下这些简单的东西。(说实话,看完这些,我觉得连入门都不算- -)
PHP脚本可以放在文档中的任何位置。
PHP脚本以 <?php 开始,以 ?> 结束。
<?php //代码 ?>
PHP 文件通常包含 html 标签和一些 PHP 脚本代码。
<!DOCTYPE html> <html> <body> <h1>My first PHP page</h1> <?php echo "Hello World!"; ?> </body> </html>
PHP 中的每个代码行都必须以分号结束。分号是一种分隔符,用于把指令集区分开来。
PHP注释格式:
//注释 /*注释*/ #注释
PHP变量规则:
以$开头,后面跟着变量名,区分大小写。
变量名必须以字母或者下划线开头。
变量名只能有数字字母和下划线。
PHP变量没有声明,在第一次赋值时被创建。(跟Python类似)
PHP有四种变量作用域:
local
global
static
parameter
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问。
<?php $x=5; // 全局变量 function myTest() { $y=10; // 局部变量 echo "<p>Test variables inside the function:<p>"; echo "Variable x is: $x"; echo "<br>"; echo "Variable y is: $y"; } myTest(); echo "<p>Test variables outside the function:<p>"; echo "Variable x is: $x"; echo "<br>"; echo "Variable y is: $y"; ?> <?php $x=5; $y=10; function myTest() { global $x,$y; //全局变量 $y=$x+$y; } myTest(); echo $y; // 输出 15 ?>
PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
<?php $x=5; $y=10; function myTest() { $GLOBALS[‘y‘]=$GLOBALS[‘x‘]+$GLOBALS[‘y‘]; } myTest(); echo $y; ?>
当一个函数完成时,变量被删除。若要防止变量被删除,可以在变量前加static。然后该变量将保留着函数前一次调用时的值。该变量仍是函数的局部变量。
在 PHP 中有两个基本的输出方式: echo 和 print。
echo 和 print 区别:
echo - 可以输出一个或多个字符串
print - 只允许输出一个字符串,返回值总为 1
提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
使用 echo 命令输出变量和字符串:
<?php $txt1="Learn PHP"; $txt2="w3cschool.cc"; $cars=array("Volvo","BMW","Toyota"); echo $txt1; echo "<br>"; echo "Study PHP at $txt2"; echo "My car is a {$cars[0]}"; ?>
echo和print的区别
一般来说,PHP中动态输出HTML内容,是通过print 和 echo 语句来实现的,在实际使用中, print 和 echo 两者的功能几乎是完全一样。可以这么说,凡是有一个可以使用的地方,另一个也可以使用。但是,两者之间也还是一个非常重要的区别:在 echo 函数中,可以同时输出多个字符串,而在 print 函数中则只可以同时输出一个字符串。同时,echo函数并不需要圆括号,所以echo函数更像是语句而不像是函数。
echo 和 print 都不是函数,而是语言结构,所以圆括号都不是必需的。
他们的区别在于:
(1) echo可以输出多个字符串,像下面这样:
echo ‘a‘,‘b‘,‘c‘;
如果你非要加上圆括号,注意写成echo (‘a‘,‘b‘,‘c‘);是错误的,应该写成:
echo (‘a‘),(‘b‘),(‘c‘);
它没有像函数的行为,所以不能用于函数的上下文
(2) print只能输出一个字符串,它可以表现得像一个函数,比如你可以如下使用:
$ret = print ‘Hello World‘;
所有它能用在更复杂的表达式中。
另外,echo的效率相对比较快!
看看如下代码:
<?php $a=‘hello ‘;$b=‘php world!‘;echo $a,$b.‘<br />‘;//echo 可以用逗号分隔字符串变量 来显示 print $a.$b.‘<br />‘;//而print不能使用逗号,只能用点号分隔, //print $a,$b.‘<br />‘;//这里使用逗号时报错。 ?>
分析总结:
echo 命令和print命令相同,没有区别
echo 函数和print函数有区别。
echo() 无返回值,与echo命令相同
print() 有返回值,成功,返1,false,返0.
printf() 和sprintf()类似,均为格式化输出,不同的是前者输出到标准输出,后者输出到变量
形如:
echo <<< EOT EOT; print <<< EOT EOT;的书写格式,其含义如下:
<<< 运算符,将由自定义分界符间的内容视为字符串,可对其间的变量做处理
EOT 自定义分界符,结束时必须位于行首
PHP 数据类型
String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)
字符串可以放在‘‘或者""中。
整型可以用三种格式来指定:十进制, 十六进制( 以 0x 为前缀)或八进制(前缀为 0)。
浮点数是带小数部分的数字,或是指数形式。
布尔型可以是 TRUE 或 FALSE。
数组可以在一个变量中存储多个值。
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。
NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。
可以通过设置变量值为 NULL 来清空变量数据。
PHP 常量
常量值被定义后,在脚本的其他任何地方都不能被改变。
常量是一个简单值的标识符。该值在脚本中不能改变。
一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
注意: 常量在整个脚本中都可以使用。
用define()函数设置常量
define(string constant_name, mixed value, case_sensitive = true)
case_sensitive是是否对大小写敏感。
<?php // 区分大小写的常量名 define("GREETING", "Ro535"); echo GREETING; // 输出 "Ro535" echo ‘<br>‘; echo greeting; // 输出 "greeting" ?> <?php // 不区分大小写的常量名 define("GREETING", "Ro535", true); echo greeting; // 输出 "Ro535" ?>
常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用。
字符串变量
$txt = "Hello world!"
在 PHP 中,只有一个字符串运算符。
并置运算符 (.) 用于把两个字符串值连接起来。
<?php $txt1="Hello world!"; $txt2="What a nice day!"; echo $txt1 . " " . $txt2; ?>
将输出:Hello world! What a nice day!
strlen() 函数返回字符串的长度(字符数)。
strpos() 函数用于在字符串内查找一个字符或一段指定的文本。
如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。
运算符
常用的运算符和Java的运算符差不多,挑几个不同的出来说说。
并置:"Hello "."World!" 连接两个字符串。在Java中是+。
PHP7+ 版本新增整除运算符 intdiv()。
3 == intdiv(10,3)
a .= b 等同于 a = a.b 连接字符串a和b并赋值给a。
恒等于:x===y。 不但要值相同,类型也要相同。5==="5"返回FALSE。
不等于:x<>y或者x!=y。
不恒等于:x!===y。 值不相同或者类型不相同。 5!==="5"返回TRUE。
与: and或者&&。
或: or 或者 ||。
异或: xor。
数组运算符:
x+y为x和y的集合。
x==y 如果 x 和 y 具有相同的键/值对,则返回 true。
x===y 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true。
x !== y 不相等。
x <> y 不相等。
x!===y 不恒等。
三元运算符:
(expr1) ? (expr2) : (expr3)
与C语言类似。
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
在 PHP7+ 版本多了一个 NULL 合并运算符
<?php // 如果 $_GET[‘user‘] 不存在返回 ‘nobody‘,否则返回 $_GET[‘user‘] 的值 $username = $_GET[‘user‘] ?? ‘nobody‘; // 类似的三元运算符$username = isset($_GET[‘user‘]) ? $_GET[‘user‘] : ‘nobody‘; ?>
组合比较符(PHP7+):
<?php // 整型 echo 1 <=> 1; // 0 echo 1 <=> 2; // -1 echo 2 <=> 1; // 1 // 浮点型 echo 1.5 <=> 1.5; // 0 echo 1.5 <=> 2.5; // -1 echo 2.5 <=> 1.5; // 1 // 字符串 echo "a" <=> "a"; // 0 echo "a" <=> "b"; // -1echo "b" <=> "a"; // 1 ?>
PHP中,条件if else、选择switch、while循环、do while循环、for循环跟Java相同。不说了。
说说foreach。
foreach ($array as $value) { 要执行代码; }
每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。
<html> <body> <?php $x=array("one","two","three"); foreach ($x as $value) { echo $value . "<br>"; } ?> </body> </html> 输出 one two three
数组。
在 PHP 中,有三种类型的数组:
数值数组 - 带有数字 ID 键的数组
关联数组 - 带有指定的键的数组,每个键关联一个值
多维数组 - 包含一个或多个数组的数组
创建数组用函数array()
数值数组
创建数值数组的两种方法:
自动分配 ID 键(ID 键总是从 0 开始): $cars=array("Volvo","BMW","Toyota"); 人工分配 ID 键: $cars[0]="Volvo"; $cars[1]="BMW"; $cars[2]="Toyota";count() 函数用于返回数组的长度(元素的数量)。
遍历数组可以用for循环。
关联数组
创建也有两种方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); or: $age[‘Peter‘]="35"; $age[‘Ben‘]="37"; $age[‘Joe‘]="43";
遍历可以用foreach循环。数组排列函数:
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() - 根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
函数
function functionName() { 要执行的代码; }PHP 函数准则:
函数的名称应该提示出它的功能
函数名称以字母或下划线开头(不能以数字开头)。
如需让函数返回一个值,请使用 return 语句。
一些魔术变量。
__LINE__
文件中的当前行号
__FILE__
文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。
__DIR__
文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。
它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。
__FUNCTION__
函数名称
__CLASS__
类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。
在 PHP 4 中该值总是小写字母的。类名包括其被声明的作用区域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 对 trait 也起作用。当用在 trait 方法中时,__CLASS__ 是调用 trait 方法的类的名字。
__TRAIT__
Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。
Trait 名包括其被声明的作用区域(例如 Foo\Bar)。
从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。
__METHOD__
类的方法名
__NAMESPACE__
当前命名空间的名称(区分大小写)
其实还有一部分叫命名空间。不过学过Java的人理解了import和package,基本不会太纠结这个东西。不过在php中,实际上这部分挺复杂,但是用处不大,很容易搞混。如果心血来潮,再另外写文章。
w3c上的基础东西差不多就这样。其他东西打算看视频学。毕竟听课比较清楚,哈哈。
本文出自 “A&D_Ro535” 博客,请务必保留此出处http://ro535.blog.51cto.com/11279790/1750296
以上是关于PHP极基本语法的主要内容,如果未能解决你的问题,请参考以下文章