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

局部和全局作用域:

  1. 在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
  2. 在函数中访问全局变量,需要使用 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);

超级全局变量:


_xk
30 声望2 粉丝

要么吊, 要么掉.


« 上一篇
Shell 脚本
下一篇 »
开源协议