PHP基础
语法
<?php
//PHP代码
echo "hello world!"; //以分号结束语句
/*注释*/
?>
变量
变量区分大小写
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>
变量不需要定义,在第一次赋值时自动创建。
使用全局变量
<?php
$x = 10;
$y = 20;
function test()
{
$y = 9;
global $x;
echo $x; //x=10
echo $y; //y=9
}
test();
?>
全局变量保存在GLOBALS数组中,可以在函数内访问:
<?php
$x=5;
$y=10;
function myTest()
{
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
静态变量定义
static $x=0;
输出语句
echo和print是用来输出的。
echo可以多个字符串连起来,逗号分割。
<?php
$txt1="学习 PHP";
$txt2="RUNOOB.COM";
$cars=array("Volvo","BMW","Toyota");
echo $txt1;
echo "<br>";
echo "在 $txt2 学习 PHP ";
echo "<br>";
echo "我车的品牌是 {$cars[0]}";
?>
数据类型
- String(字符串),
- Integer(整型),
- Float(浮点型),
- Boolean(布尔型),
- Array(数组),
- Object(对象),
- NULL(空值)
字符串
字符串可以以单引号或双引号括起来
PHP整型的三种格式
整型可以用三种格式来指定:
1. 十进制
2. 十六进制( 以 0x 为前缀)
3. 八进制(前缀为 0)
布尔型
$x = true;
var_dump()函数查看数据类型
PHP var_dump() 函数可以返回变量的数据类型和值:
<?php
echo var_dump(555);
var_dump("hello");
?>
PHP数组
创建数组
<?php
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
?>
PHP对象
<?php
class Car
{
var $color;
function Car($color="green") {
$this->color = $color;
}
function what_color() {
return $this->color;
}
}
?>
NULL/null值 可用于清空数据
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>
定义常量
bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )
<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com");
echo GREETING; // 输出 "欢迎访问 Runoob.com"
echo '<br>';
echo greeting; // 输出 "greeting"
?>
字符串处理
运算符
PHP只有一个字符串运算符.,用于将两个字符串连接起来
<?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
?>
常用函数
strlen() 返回字符串长度
strpos() 查找字符串位置
<?php
echo strpos("Hello world!","world");
?>
对于中文:
<?php
echo strlen("中文字符"); // 输出 11
?>
/*输出结果为 12,因为一个中文占 3 个字符数。
可以使用 mb_strlen 设置指定编码输出中文字符个数:*/
<?php
echo mb_strlen("中文字符",'utf-8'); // 输出 4
?>
PHP运算符
取反: -x
赋值运算符: =,+=,-=等等
递增递减: x++,x–
比较运算符
x == y 等于,不同类型的比较会强转
x === y 绝对等于,仅当x等于y且类型相同才返回true
逻辑运算符
and or xor && || !
数组运算符
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
三元运算符
? :
组合运算符
$c = $a <=> $b;
这句代码的意思是:
如果 $a > $b, $c 的值为 1
如果 $a == $b, $c 的值为 0
如果 $a < $b, $c 的值为-
运算符优先级
运算符的优先级口诀:括(号)、单(操作数)、算(术)、移(位)、关(系);位(运算符)、逻(辑)、条(件)、赋(值)、逗(号)。
<?php
// 优先级: && > = > and
// 优先级: || > = > or
$a = 3;
$b = false;
$c = $a or $b;
var_dump($c); // 这里的 $c 为 int 值3,而不是 boolean 值 true
$d = $a || $b;
var_dump($d); //这里的 $d 就是 boolean 值 true
?>
条件执行语句
if(条件)
条件若是数值,则只要不是0就代表是true;
条件若是字符串,则空字符串代表false
if..else..
if..elseif..else
switch(){case x:}
与java一样
PHP数组
类型:
数值数组-带有数字ID键的数组
关联数组-带有指定的键的数组
多维数组-包含一个或多个数组的数组
创建数组
数值ID数组
<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
关联数组
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
获取数组长度
count()
遍历数组
遍历数值数组
<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++)
{
echo $cars[$x];
echo "<br>";
}
?>
遍历关联数组
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息。有两种语法:
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 key。
数组排序
sort() - 对数组进行升序排列
rsort() - 对数组进行降序排列
asort() -
根据关联数组的值,对数组进行升序排列
ksort() - 根据关联数组的键,对数组进行升序排列
arsort() - 根据关联数组的值,对数组进行降序排列
krsort() - 根据关联数组的键,对数组进行降序排列
排序直接影响原数组
超级全局变量
PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。
$GLOBALS
全局变量数组
<?php
$x = 75;
$y = 25;
function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
$_SERVER
由web服务器创建,保存server信息
<?php
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>
$_REQUEST
收集表单中提交的数据
<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用法同上
循环语句
while(..)…
do while(..)
for(..;..;..)
以上同JAVA
PHP函数
创建函数
<?php
function func()
{
//要执行的代码
}
?>
带返回值函数
返回类型不需要定义
<?php
function add($x, $y)
{
return $x + $y;
}
echo '1+2=' . add(1,2);
?>
PHP魔术变量
PHP 向它运行的任何脚本提供了大量的预定义常量。
不过很多常量都是由不同的扩展库定义的,只有在加载了这些扩展库时才会出现,或者动态加载后,或者在编译时已经包括进去了。
有八个魔术常量它们的值随着它们在代码中的位置改变而改变。
LINE和 FILE
用于显示当前行和当前文件
<?php
echo __LINE__.' ';
echo __FILE__;
?>
__DIR__ 文件缩在目录
__FUNCTION__ 当前函数名
__CLASS__ 当前类名
__TRAIT__ trait名
__METHOD__ 类的方法名
__NAMESPACE__ 当前命名空间
命名空间
在声明命名空间之前唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。
常见错误
<html>
<?php
namespace MyProject; // 命名空间前出现了“<html>” 会致命错误 - 命名空间必须是程序脚本的第一条语句
?>
PHP面向对象
类定义
class Hero
{
private $name;
private $sex;
public function __construct($name, $sex)
{
$this->name = $name;
$this->sex = $sex;
}
public function __destruct()
{
echo 'Hero:'.$this->name.'销毁。';
}
function jump()
{
echo $this->name.' jump!'.'</br>';
}
function run()
{
echo $this->name.' run!'.'<br>';
}
}