Introduction:
PHP 跟 JavaScript 的语法,差别比较大。所以这里做为区分。
变量:
JavaSciprt:
let a = 1;
PHP:
$a = 1;
php 使用 $ 开头,作为变量名.
常量:
JavaScript:
const A_B = 1;
PHP:
define("A_B", 1);
* php 常量,不需要 $ 开头.
* php 需要用 define 定义.
* 常量在定义后,默认是全局变量,可以在整个运行的脚本的任何地方使用.
数组:
JavaScript:
let arrs = ["Volvo","BMW","Toyota", 1, true];
获取数组长度:
arrs.length
PHP:
$arrs = array("Volvo","BMW","Toyota", 1, true);
获取数组长度:
count($arrs)
php 使用 array 生成数组, 下面是使用 var_dump 输出数组:
var_dump($arrs);
// array(5) {
// [0]=> string(5) "Volvo"
// [1]=> string(3) "BMW"
// [2]=> string(6) "Toyota"
// [3]=> int(1)
// [4]=> bool(true)
// }
* 通过上面输出信息可以看到,var_dump 讲数组的长度输出,数组中每个元素对应的类型,和长度等都输出来了。
* var_dump() 函数用于输出变量的相关信息。
对象:
JavaScript:
let obj = { color: "white" };
PHP:
class Obj {
var color = "white";
}
$obj = new Obj();
var_dump($obj);
// object(Obj)#1 (1) { \["color"\]=> string(5) "white" }
* 可以看出 PHP 的对象,要通过 class 构建,JavaScript 的对象,可以直接通过 对象字面量 定义出来。
* 如上对象 $obj, 我们要调用/获取它下面 color 的话,语法为:
$obj->color; 相当于 JavaScript 的 obj.color;
关联数组:
$age = array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
$strs["test"] = "test";
$strs["test2"] = "test2";
* 在 PHP 中,可以这样定义数组,这种形式的数组叫关联数组.
* 调用的话 $strs["test"],猜想有点像 JavaScript 的对象,是否可以像上面的对象一样用 -> 去使用。发现是不行的。
* 关联数组中可以如下:
$arrs["fn"] = function ($str) {
echo $str;
};
$arrs["fn"]("aaa");
Ps:
注意 function 后面的 ; 不能省略,否则报错 syntax error, unexpected T_VARIABLE
字符串:
PHP:
$str = "string";
$str2 = "$str = {$str}";
$str3 = $str. $str2 . "test";
* 这里注意,php 中,单引号跟双引号包括起来的字符串是不一样的。
* 在单引号内,我们只能使用静态数据。相反,如果我们想要动态插值PHP变量,那么我们需要使用双引号。
* 字符串中,动态插入变量,使用{} 或者直接使用变量名,建议使用 {} 包裹着。
* 字符串 拼接 使用 .
* 字符串换行使用 PHP_EOL:
1.\n(或 \r\n)换行:这是在内容之间添加实际换行符的PHP转义序列之一
2.PHP_EOL:此预定义常量用作行尾的表示,从而可以进行换行
范围解析操作符 (::):
范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员,类常量,还可以用于覆盖类中的属性和方法。
作用域:
PHP 有四种不同的变量作用域:
local
global
static
parameter
局部和全局作用域:
在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
在函数中访问全局变量,需要使用 global 关键字:
$x = 5;
$y = 1;
function myTest() {
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y;
相当于下面写法:
$x=5;
$y=10;
function myTest() {
$GLOBALS['y']=$GLOBALS['x']+$GLOBALS['y'];
}
myTest();
echo $y;
上面的处理结果,在不同的php 版本输出的结果不一样。
在 PHP5 中输出 15,在 PHP7 中 输出 10,因为PHP7中,global 关键字只能引用简单变量
Static 作用域:
当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。
要做到这一点,请在您第一次声明变量时使用 static 关键字:
function myTest()
{
static $x=0;
echo $x;
$x++;
}
myTest();
myTest();
myTest();
参数作用域:
参数是通过调用代码将值传递给函数的局部变量。
参数是在参数列表中声明的,作为函数声明的一部分
function myTest($x)
{
echo $x;
}
myTest(5);
超级全局变量: