程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 前端學PHP之變量范圍,前端php變量

前端學PHP之變量范圍,前端php變量

編輯:關於PHP編程

前端學PHP之變量范圍,前端php變量


×
目錄
[1]范圍跨度 [2]函數范圍 [3]global[4]預定義變量[5]超全局變量

前面的話

  變量范圍即它定義的上下文背景(也就是它的生效范圍)。在javascript中,並沒有變量范圍這一概念,相似的可能是作用域。但是,由於javscript使用的是詞法作用域,指變量聲明時的位置;而php並不存在變量聲明,變量在第一次賦值時相當於聲明了變量。所以,二者並不相同。本文將詳細介紹php中的變量范圍

 

范圍跨度

  大部分的PHP變量只有一個單獨的范圍。這個單獨的范圍跨度同樣包含了include和require引入的文件

  這裡變量$a將會在包含文件b.inc中生效

<?php
$a = 1;
include 'b.inc';
?>

 

函數范圍

  在用戶自定義函數中,一個局部函數范圍將被引入。任何用於函數內部的變量按缺省情況將被限制在局部函數范圍內

  下面這個腳本不會有任何輸出,因為echo語句引用了一個局部版本的變量 $a,而且在這個范圍內,它並沒有被賦值

<?php
$a = 1; /* global scope */
function Test()
{
    echo $a; /* reference to local scope variable */
}
Test();
?>

 

global關鍵字

  以下腳本的輸出將是“3”。在函數中聲明了全局變量$a和$b之後,對任一變量的所有引用都會指向其全局版本。對於一個函數能夠聲明的全局變量的最大個數,PHP沒有限制

<?php
$a = 1;
$b = 2;
function Sum()
{
    global $a, $b;
    $b = $a + $b;
}
Sum();
echo $b;
?>

  在全局范圍內訪問變量的第二個辦法,是用特殊的PHP自定義$GLOBALS數組

  GLOBALS是一個關聯數組,每一個變量為一個元素,鍵名對應變量名,值對應變量的內容。GLOBALS之所以在全局范圍內存在,是因為GLOBALS是一個超全局變量

<?php
$a = 1;
$b = 2;
function Sum()
{
    $GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
Sum();
echo $b;
?>

 

預定義變量

  對於全部腳本而言,PHP提供了大量的預定義變量。這些變量將所有的外部變量表示成內建環境變量,並且將錯誤信息表示成返回頭

  下面是預定義變量的列表

超全局變量 — 超全局變量是在全部作用域中始終可用的內置變量
$GLOBALS — 引用全局作用域中可用的全部變量
$_SERVER — 服務器和執行環境信息
$_GET — HTTP GET 變量
$_POST — HTTP POST 變量
$_FILES — HTTP 文件上傳變量
$_REQUEST — HTTP Request 變量
$_SESSION — Session 變量
$_ENV — 環境變量
$_COOKIE — HTTP Cookies
$php_errormsg — 前一個錯誤信息
$HTTP_RAW_POST_DATA — 原生POST數據
$http_response_header — HTTP 響應頭
$argc — 傳遞給腳本的參數數目
$argv — 傳遞給腳本的參數數組

  大多數的預定義變量並不是超全局變量,它們需要用'global' 關鍵字來使它們在函數的本地區域中有效

 

超全局變量

  超全局變量在任何范圍內都有效,它們並不需要'global'聲明

  下面是超全局變量的列表

$GLOBALS
$_SERVER
$_GET
$_POST
$_FILES
$_COOKIE
$_SESSION
$_REQUEST
$_ENV
<?php
function test_global()
{
    //預定義變量
    global $HTTP_POST_VARS;
    echo $HTTP_POST_VARS['name'];
    //超全局變量
    echo $_POST['name'];
}
?>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved