PHP基础

PHP基础

基本的 PHP 语法

PHP 脚本可以放在文档中的任何位置。

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

<?php
// PHP 代码
?>

PHP 文件通常包含 HTML 标签和一些 PHP 脚本代码。PHP 中的每个代码行都必须以分号结束。

输出文本 “Hello World!”:

<!DOCTYPE html>
<html>
<body>

<h1>My first PHP page</h1>

<?php
echo "Hello World!";
?>

</body>
</html>

PHP中注释同C一样。

通过 PHP,有两种在浏览器输出文本的基础指令:echoprint

PHP 变量

PHP 变量规则:

  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格
  • 变量名是区分大小写的($y 和 $Y 是两个不同的变量)
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>

注:不必向 PHP 声明该变量的数据类型。PHP 会根据变量的值,自动把变量转换为正确的数据类型(PHP 是一门弱类型语言)。

PHP 变量作用域

  • local
  • global
  • static
  • parameter
<?php
$x=5; // 全局变量

function myTest()
{
    $y=10; // 局部变量
    echo "<p>测试函数内变量:<p>";
    echo "变量 x 为: $x";
    echo "<br>";
    echo "变量 y 为: $y";
} 

myTest();

echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
?>

运行结果:

测试函数内变量:

变量 x 为:
变量 y 为: 10

测试函数外变量:

变量 x 为: 5
变量 y 为:

当我们调用myTest()函数并输出两个变量的值, 函数将会输出局部变量 y 的值,但是不能输出 x 的值,因为 $x 变量在函数外定义,无法在函数内使用,如果要在一个函数中访问一个全局变量,需要使用 global 关键字。

然后我们在myTest()函数外输出两个变量的值,函数将会输出全局变量 x 的值,但是不能输出 y 的值,因为 $y 变量在函数中定义,属于局部变量。

global 关键字

global 关键字用于函数内访问全局变量。

注:PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。

<?php
$x=5;
$y=10;
 
function myTest()
{
    global $x,$y;
    $y=$x+$y;
    //$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
    //或者将这两句写成这样
}


myTest();
echo $y; // 输出 15
?>

Static 作用域

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候希望某个局部变量不要被删除。

要做到这一点,在第一次声明变量时使用 static 关键字:

<?php
function myTest()
{
    static $x=0;
    echo $x;
    $x++;
    echo PHP_EOL;    // 换行符
}
 
myTest();
myTest();
myTest();
?>

运行结果:

0 1 2

PHP echo 和 print 语句

区别:

  • echo - 可以输出一个或多个字符串
  • print - 只允许输出一个字符串,返回值总为 1

**提示:**echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。

echo

可以不用加括号,也可以加上括号: echo 或 echo()

举例:

<?php
$txt1="学习 PHP";
$txt2="RUNOOB.COM";
$cars=array("Volvo","BMW","Toyota");
 
echo $txt1;
echo "<br>";
echo "在 $txt2 学习 PHP ";
echo "<br>";
echo "我车的品牌是 {$cars[0]}";
?>

运行结果:

学习 PHP
在 RUNOOB.COM 学习 PHP
我车的品牌是 Volvo

print

可以使用括号,也可以不使用括号: print 或 print()

EOF(heredoc) 使用说明

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

    1. 必须后接分号,否则编译通不过。
    1. EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
  • 3. 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
    1. 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
    1. 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。
<?php
echo <<<EOF
        <h1>我的第一个标题</h1>
        <p>我的第一个段落。</p>
EOF;
// 结束需要独立一行且前后不能空格
?>

PHP 数据类型

  • String(字符串)
  • Integer(整型)
  • Float(浮点型)
  • Boolean(布尔型)
  • Array(数组)
  • Object(对象)
  • NULL(空值)
  • Resource(资源类型)

PHP 字符串(String)

可以将任何文本放在单引号和双引号中:

<?php 
$x = "Hello world!";
echo $x;
echo "<br>"; 
$x = 'Hello world!';
echo $x;
?>

运行如果:

Hello world!
Hello world!

PHP 整型(Integer)

PHP ==var_dump()==函数返回变量的数据类型和值:

<?php 
$x = 5985;
var_dump($x);
echo "<br>"; 
$x = -345; // 负数 
var_dump($x);
echo "<br>"; 
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
?>

运行结果:

int(5985)
int(-345)
int(140)
int(39)

PHP浮点型(Float)

<?php 
$x = 10.365;
var_dump($x);
echo "<br>"; 
$x = 2.4e3;
var_dump($x);
echo "<br>"; 
$x = 8E-5;
var_dump($x);
?>

运行结果:

float(10.365)
float(2400)
float(8.0E-5)

PHP 数组(Array)

<?php 
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
?>

运行结果:

array(3) { [0]=> string(5) "Volvo" [1]=> string(3) "BMW" [2]=> string(6) "Toyota" }

PHP 类型比较

  • 松散比较:使用两个等号 == 比较,只比较值,不比较类型。
  • 严格比较:用三个等号 === 比较,除了比较值,也比较类型。

PHP 常量

一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。

注意: 常量在整个脚本中都可以使用。

  1. 区分大小写: 常量名称默认是区分大小写的。如果需要定义大小写不敏感的常量,可以在 define() 函数的第三个参数设置为 true

define()

设置常量,使用 define() 函数,函数语法如下:

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
  • **name:**必选参数,常量名称,即标志符。
  • **value:**必选参数,常量的值。
  • case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的。

const 关键字

const SITE_URL = "https://www.runoob.com";
echo SITE_URL; // 输出 "https://www.runoob.com"

PHP 字符串变量

PHP 并置运算符(.)

并置运算符 (.) 用于把两个字符串值连接起来。

<?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
?>

结果:

Hello world! What a nice day!

在上面的代码中,我们已经使用了两次并置运算符。这是由于我们需要在两个字符串之间插入一个空格。

strlen() 函数

strlen() 函数返回字符串的长度(字节数)。

strpos() 函数

strpos() 函数用于在字符串内查找一个字符或一段指定的文本。

如果在字符串中找到匹配,该函数会返回第一个匹配的字符位置。如果未找到匹配,则返回 FALSE。

下面的实例在字符串 “Hello world!” 中查找文本 “world”:

<?php
echo strpos("Hello world!","world");
?>

输出:6

PHP 运算符

算术运算符

运算符名称描述实例结果
-x设置负数取 x 的相反符号<?php $x = 2; echo -$x; ?>-2
~x取反x 取反,按二进制位进行"取反"运算。运算规则:~1=-2; ~0=-1;<?php $x = 2; echo ~$x; ?>-3
a . b并置连接两个字符串“Hi” . “Ha”HiHa

递增/递减运算符

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

比较运算符

x != y不等于如果 x 不等于 y,则返回 true5!=8 返回 true
x <> y不等于如果 x 不等于 y,则返回 true5<>8 返回 true
x !== y不绝对等于如果 x 不等于 y,或它们类型不相同,则返回 true5!==“5” 返回 true

逻辑运算符

x and y如果 x 和 y 都为 true,则返回 truex=6 y=3 (x < 10 and y > 1) 返回 true
x or y如果 x 和 y 至少有一个为 true,则返回 truex=6 y=3 (x6 or y5) 返回 true
x xor y异或如果 x 和 y 有且仅有一个为 true,则返回 truex=6 y=3 (x6 xor y3) 返回 false

三元运算符

语法格式:

(expr1) ? (expr2) : (expr3) 

对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。

注:自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。

组合比较符

语法格式如下:

$c = $a <=> $b;
  • 如果 $a > b ∗ ∗ , 则 ∗ ∗ b**, 则 ** b,c 的值为 1
  • 如果 $a == b ∗ ∗ , 则 ∗ ∗ b**, 则 ** b,c 的值为 0
  • 如果 $a < b ∗ ∗ , 则 ∗ ∗ b**, 则 ** b,c 的值为 -1

数组

遍历数值数组

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
 
for($x=0;$x<$arrlength;$x++)
{
    echo $cars[$x];
    echo "<br>";
}
?>

关联数组

  1.  $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
    
  2.  $age['Peter']="35";
     $age['Ben']="37";
     $age['Joe']="43";
    
遍历关联数组

遍历并打印关联数组中的所有值,您可以使用 foreach 循环,如下所示:

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
 
foreach($age as $x=>$x_value)
{
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
?>

结果:

Key=Peter, Value=35
Key=Ben, Value=37
Key=Joe, Value=43

PHP - 数组排序函数

  • sort() - 对数组进行升序排列
  • rsort() - 对数组进行降序排列
  • asort() - 根据关联数组的值,对数组进行升序排列
  • ksort() - 根据关联数组的键,对数组进行升序排列
  • arsort() - 根据关联数组的值,对数组进行降序排列
  • krsort() - 根据关联数组的键,对数组进行降序排列

asort() - 根据数组的值,对数组进行升序排列

<?php
	$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
	asort($age);?>

结果:

Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )

ksort() - 根据数组的键,对数组进行升序排列

<?php
	$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
	ksort($age);?>

结果:

Array ( [Ben] => 37 [Joe] => 43 [Peter] => 35 )

PHP 超级全局变量

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

$GLOBALS

<?php 
$x = 75; 
$y = 25;
 
function addition() 
{ 
    $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 
}
 
addition(); 
echo $z; 
?>

以上实例中 z 是一个$GLOBALS数组中的超级全局变量,该变量同样可以在函数外访问。

$_SERVER

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。

$_REQUEST

$_REQUEST 用于收集HTML表单提交的数据。

以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 “Submit” 按钮提交表单数据时, 表单数据将发送至标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据:

<html>
<body>
 
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
 
<?php 
$name = $_REQUEST['fname']; 
echo $name; 
?>
 
</body>
</html>

$_POST

PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method=“post”。

以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 “Submit” 按钮提交表单数据时, 表单数据将发送至标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_POST 来收集表单中的 input 字段数据:

<html>
<body>
 
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
 
<?php 
$name = $_POST['fname']; 
echo $name; 
?>
 
</body>
</html>

$_GET

PHP $_GET 同样被广泛应用于收集表单数据,在HTML form标签的指定该属性:"method=“get”。

$_GET 也可以收集URL中发送的数据。

<html>
<body>

<a href="test_get.php?subject=PHP&web=runoob.com">Test $GET</a>

</body>
</html>

当用户点击链接 “Test $GET”, 参数 “subject” 和 “web” 将发送至"test_get.php",你可以在 “test_get.php” 文件中使用 $_GET 变量来获取这些数据。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值