
批改狀態(tài):合格
老師批語:寫的還行!盡量跟上老師講課的進(jìn)度!
變量分為局部變量和全局變量,作用域就是變量的生效范圍
1.變量作用域,示例:
$demo = '變量';//全局作用域
function demo()
{
$demo1 = '函數(shù)內(nèi)變量';//函數(shù)作用域
}
echo $demo; //輸出結(jié)果
echo $demo1;//不會(huì)打印變量,因其作用域在函數(shù)demo內(nèi),只能在函數(shù)內(nèi)部使用
2.全局變量,示例:
$demo = '變量';
$demo1 = '變量123';
function demo()
{
// 聲明一個(gè)全局變量,聲明為全局變量才能對(duì)外部變量修改
global $demo1;
return $demo1;
}
echo $demo;//輸出結(jié)果
echo demo();//輸出結(jié)果
3.超全局變量\$GLOBALS,(\$GLOBALS 是一個(gè)預(yù)定義的超全局?jǐn)?shù)組,其中包含了全局作用域中的所有可用變量,變量的名字就是數(shù)組的鍵。)
/*global和$GLOBALS 區(qū)別:global $var 指的是對(duì)函數(shù)外部同名變量的引用,是兩個(gè)互不影響的變量,而 $GLOBALS['var'] 指的是函數(shù)外部變量本身。
*/
$demo = '變量';
$demo1 = '變量123';
function demo()
{
return $GLOBALS['demo1'];
}
echo $GLOBALS['demo'];
常量類似變量,貫穿整個(gè)腳本是自動(dòng)全局的,但是常量一旦被定義就無法更改,有效的常量名以字符或下劃線開頭(常量名稱前面沒有 $ 符號(hào)),通常使用大寫字母定義常量,不能使用數(shù)字開頭;
- 常量有2種定義方式:
1.使用const關(guān)鍵字;
2.使用define()函數(shù);- 系統(tǒng)常量,可以使用print_r(get_defined_constants());查看所有系統(tǒng)常量
// const 定義
const DEMO= '常量';
// 函數(shù)define定義
define('DEMO1', 'define定義常量');
//類中的常量只能用const定義
class demo{
const DEMO2='類中的常量';
function demo2(){
//在類里面訪問定義的類常量用self關(guān)鍵字;self的代表的就是當(dāng)前類
echo self::DEMO2;
}
}
//類外常量的訪問
echo demo::DEMO2;
//constant,返回一個(gè)常量的值:
echo constant('DEMO');
// 查詢用戶自定義的常量
print_r(get_defined_constants(true)['user']);
2.1 預(yù)定義常量
| 序號(hào) | 魔術(shù)常量 | 描述 |
| —— | —————————- | ————— |
| 1 | PHP_VERSION | 版本號(hào) |
| 2 | PHP_OS_FAMILY | 操作系統(tǒng) |
| 3 | PHP_INT_MAX | 最大整數(shù) |
| 4 | PHP_FLOAT_MAX | 最大浮點(diǎn)數(shù) |
| 5 | DIRECTORY_SEPARATOR | 目錄分隔符 |
序號(hào) | 魔術(shù)常量 | 描述 |
---|---|---|
1 | __LINE__ |
文件中的當(dāng)前行號(hào) |
2 | __FILE__ |
文件的完整路徑和文件名 |
3 | __DIR__ |
文件所在目錄 |
4 | __FUNCTION__ |
當(dāng)前的函數(shù)名稱 |
5 | __CLASS__ |
當(dāng)前類名稱 |
6 | __TRAIT__ |
當(dāng)前Trait 名稱 |
7 | __METHOD__ |
當(dāng)前類方法名稱 |
8 | __NAMESPACE__ |
當(dāng)前命名空間名稱 |
9 | __FILE__ |
當(dāng)前文件 |
10 | __DIR__ |
當(dāng)前目錄 |
11 | __LINE__ |
當(dāng)前行號(hào) |
//全局成員,不允許重復(fù)定義,因此使用命名空間來定義
namespace demo {
const TEST = '第一個(gè)命名空間';
}
namespace demo1 {
const TEST = '第二個(gè)命名空間';
}
//全局空間: 匿名空間
namespace {
echo \demo\TEST, "<br>";
echo \demo1\TEST, "<br>";
}
序號(hào) | 函數(shù) | 描述 |
---|---|---|
1 | filter_list() |
當(dāng)前php版本支持的預(yù)定義過濾器 |
2 | filter_id() |
返回指定過濾器的 ID 號(hào) |
3 | filter_var() |
過濾單個(gè)變量 |
4 | filter_var_array() |
過濾多個(gè)變量 |
5 | filter_has_var() |
檢測是否存在某個(gè)外部變量 |
6 | filter_input() |
過濾單個(gè)外部變量 |
7 | filter_input_array() |
過濾多個(gè)外部變量 |
序號(hào) | 過濾器函數(shù) | 描述 |
---|---|---|
1 | FILTER_VALIDATE_INT |
驗(yàn)證整數(shù) |
2 | FILTER_VALIDATE_FLOAT |
浮點(diǎn)點(diǎn)驗(yàn)證 |
3 | FILTER_VALIDATE_BOOLEAN |
驗(yàn)證布爾項(xiàng) |
4 | FILTER_VALIDATE_EMAIL |
驗(yàn)證郵箱 |
5 | FILTER_VALIDATE_URL |
驗(yàn)證 URL 地址 |
6 | FILTER_VALIDATE_IP |
驗(yàn)證 IP 地址 |
7 | FILTER_VALIDATE_REGEXP |
正則驗(yàn)證 |
FILTER_VALIDATE_BOOLEAN
: 布爾選項(xiàng)的返回值類型序號(hào) | 返回值 | 描述 |
---|---|---|
1 | true |
“1”, “true”, “on” 和 “yes” |
2 | false |
“0”, “false”, “off”, “no”, “” |
3 | null |
除以上情形外 |
序號(hào) | 過濾器函數(shù) | 描述 |
---|---|---|
1 | FILTER_UNSAFE_RAW |
保持原始數(shù)據(jù) |
2 | FILTER CALLBACK |
自定義函數(shù)過濾數(shù)據(jù) |
3 | FILTER_SANITIZE_STRING |
去除標(biāo)簽以及特殊字符:strip_tags() |
4 | FILTER_SANITIZE_STRIPPED |
“string” 過濾器別名 |
5 | FILTER_SANITIZE_ENCODED |
URL-encode 字符串,去除或編碼特殊字符 |
6 | FILTER_SANITIZE_SPECIAL_CHARS |
HTML 轉(zhuǎn)義字符, 等價(jià)于 htmlspecialchars() |
7 | FILTER_SANITIZE_EMAIL |
僅保留郵箱地址的合法字符 |
8 | FILTER_SANITIZE_URL |
僅保留合法的 URL, 必須從協(xié)議開始http/https |
9 | FILTER_SANITIZE_NUMBER_INT |
僅保留合法的數(shù)字和正負(fù)號(hào)+- |
10 | FILTER_SANITIZE_NUMBER_FLOAT |
僅保留合法的數(shù)字和正負(fù)號(hào)+- 以及指數(shù) .,eE |
11 | FILTER_SANITIZE_MAGIC_QUOTES |
等價(jià)于函數(shù): addslashes() |
示例:
//顯示當(dāng)前PHP版本的預(yù)定義過濾器
foreach (filter_list() as $filter_items){
echo filter_id($filter_items). '->'.$filter_items.'<br>';
}
// 1.單個(gè)變量過濾filter_var(variable, filter, options)
$num=5;
$str='AAA';
var_dump(filter_var($str,FILTER_VALIDATE_INT));//輸出bool(false)
$options = ['options'=>['min_range'=> 18]];//規(guī)定一個(gè)包含標(biāo)志/選項(xiàng)的關(guān)聯(lián)數(shù)組或者一個(gè)單一的標(biāo)志/選項(xiàng)。檢查每個(gè)過濾器可能的標(biāo)志和選項(xiàng)。
var_dump(filter_var($num, FILTER_VALIDATE_INT, $options));//輸出bool(false)
//2.多個(gè)變量過濾:filter_var_array()
$person = ['name' => '小剛', 'age' => 10, 'sex' => '男'];
var_dump(filter_var_array($person, FILTER_VALIDATE_INT));//輸出array(3) { ["name"]=> bool(false) ["age"]=> int(10) ["sex"]=> bool(false) }
//外部變量過濾:filter_input(輸入類型, 變量名, 過濾器, 可選參數(shù))
//獲取瀏覽器地址中ID值
echo 'id = ' .$_GET['id'];
//設(shè)置過濾條件ID最小值為1
$options = ['options'=>['min_range'=> 1]];
var_dump(filter_input(INPUT_GET,'id',FILTER_VALIDATE_INT,$options));
//同時(shí)驗(yàn)證多個(gè)外部變量
//url=http://php.edu/0703/1.php?name=jack&email=abc@qq.com&age=33
$data = [
'name'=> FILTER_SANITIZE_STRING,
'email'=>FILTER_VALIDATE_EMAIL,
'age'=> ['filter'=>FILTER_VALIDATE_INT, 'options'=>['min_range'=> 25, 'max_range'=> 55]],
];
var_dump(filter_input_array(INPUT_GET, $data ));//輸出array(3) { ["name"]=> string(4) "jack" ["email"]=> string(10) "abc@qq.com" ["age"]=> int(33) }
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)