php查漏補缺之變量(一)

1.關於普通變量 與 global變量的區別

首先  PHP 是一門鬆散類型的語言(Loosely Typed Language)。

不需要在設置變量之前聲明該變量。

$abc= "123asdasdasd";

echo "<br>";
echo $abc;
echo "<br/>";
var_dump($abc);

$abc = 234;

echo "<br>";
echo $abc;
var_dump($abc);

輸出你懂的,是123 和 234,變量就像一個盒子 ,我們把東西放進一個名爲abc的盒子,盒子只能同時存在一種數據類型

疑問:上面的 $abc= "123asdasdasd";  不是同時存在 123 和 asdsdasd 這2種數據嗎?

不是的 我們用var_dump打印後 發現 是string 類型,也就是字符串類型,因爲在php中變量內容凡是打單引號或雙引號的,都會被視作字符串去處理

下面的$abc=123;則會看作是數字

在開發過程中 如果要在中間插入代碼 就要注意了 ,命名的時候,要看看前面的代碼 有沒這個名字 ,後面有沒用到。如果有就不能起相同的名字了


關於global

<?php
$a = 1;
$b = 2;

function Sum()
{
    global $a, $b;

    $b = $a + $b;
}

Sum();
echo $b;
?>

上面這個例子 輸出是3 

如果我把上面的global $a,$b註釋掉會怎麼樣呢

請看下面例子

<?php
$a = 1;
$b = 2;

function Sum()
{
    //global $a, $b;

    $b = $a + $b;
}

Sum();
echo $b;
?>

這個例子 輸出的是2

爲什麼呢?

這是因爲$a =1, $b=2; 這裏聲明的只是局部變量 ,而方法體內和方法體外,是2個不同的作用域.

所以第二個例子中的$b與 方法體無關,可以看作是2個不同的變量。所以得出的是2.  然而 第一個例子 ,我們把$a 和 $b 全局聲明後 ,變量就能在該方法體內和方法體外使用,sum操作的也就是$a =1, $b=2的值,所以最後得出3 ,其實依我看,在方法體內用global 聲明變量,也可以看作是一個傳值的過程。因爲如果sum下面還有一個函數需要調用$a,$b 還需要global一次

如果還不明白作用域的問題,可以再看以下例子

<?php
$a = 1;
$b = 2;

function Sum()
{
    //global $a, $b;

    $b = 5;
	echo $b;
}
 Sum();

echo "<br/>";
echo $b;
?>

這裏輸出的是 5   和  2 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章