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上的基础东西差不多就这样。其他东西打算看视频学。毕竟听课比较清楚,哈哈。

你可能感兴趣的:(PHP,基础)