[PHP] Variable
變數的轉型
<?php
$number = 12345 * 67890;
echo substr($number, 3, 1);
?>
這段的結果是1
<?php
$number = "12345 * 67890";
echo substr($number, 3, 1);
?>
這段的結果是4,因為把它當成字串來擷取 第四個元素就是4
常數
兩件事:
常數前面不用加$
只能用define來定義
通常使用大寫來定義
常數前面不用加$
只能用define來定義
通常使用大寫來定義
drfine("ROOT_LOCATION", "/usr/local/www/");
$directory = ROOT_LOCATION;
奇奇怪怪的常數:
_LINE_
_FILE_
_DIR_
_FUNCTION_
_CLASS_
_METHOD_
_NAMESPACE_
//example:
ehco "this is line " . _LINE_ . " of file " . _FILE_;
FUNCTION
<?php
function longdate($timestamp)
{
return date("l F jS Y", $timestamp);
}
echo longdate(time());
?>
變數範圍:
如果只想要變數只在函式內作用的話,
可以使用 $temp 。
如果只想要變數只在函式內作用的話,
可以使用 $temp 。
區域變數:
來比較一下結果
來比較一下結果
<?php
function longdate($timestamp)
{
$temp = date("l F jS Y", $timestamp);
return "the date is $date";
}
?>
<?php
$temp = "the date is ";
echo longdate(time());
function longdate($timestamp)
{
return $temp . date("l F jS Y", $timestamp);
}
?>
第一種當呼叫完之後,變數就在回傳完清除。
第二種longdate無法存取,因為 $temp 不宣告在裡面。
第二種longdate無法存取,因為 $temp 不宣告在裡面。
怎麼解決第二種的問題呢?一種是傳遞出來一種是傳遞進去。
<?php
$temp = "the date is ";
echo $temp . longdate(time());
function longdate($timestamp)
{
return date("l F jS Y", $timestamp);
}
?>
<?php
$temp = "the date is ";
echo longdate($temp, time());
function longdate($text, $timestamp)
{
return $text . date("l F jS Y", $timestamp);
}
?>
global variable:
global $is_logged_in;
recommend using capital letters
global $IS_LOGGED_IN;
static variable:
<?php
function test()
{
static $count = 0;
echo $count;
$count++;
}
?>
leagal declare & illegal declare:
宣告靜態變數時只能指定初始值,並不能用算式去賦值。
<?php
static $int = 0; //leagal
static $int = 1+2; //illegal (Parse error)
static $int = sqrt(144); //illegal
?>
Predefined Variables
Superglobals — Superglobals are built-in variables that are always available in all scopes
$GLOBALS — References all variables available in global scope
$_SERVER — Server and execution environment information
$_GET — HTTP GET variables
$_POST — HTTP POST variables
$_FILES — HTTP File Upload variables
$_REQUEST — HTTP Request variables
$_SESSION — Session variables
$_ENV — Environment variables
$_COOKIE — HTTP Cookies
$php_errormsg — The previous error message
$HTTP_RAW_POST_DATA — Raw POST data
$http_response_header — HTTP response headers
$argc — The number of arguments passed to script
$argv — Array of arguments passed to script
$GLOBALS — References all variables available in global scope
$_SERVER — Server and execution environment information
$_GET — HTTP GET variables
$_POST — HTTP POST variables
$_FILES — HTTP File Upload variables
$_REQUEST — HTTP Request variables
$_SESSION — Session variables
$_ENV — Environment variables
$_COOKIE — HTTP Cookies
$php_errormsg — The previous error message
$HTTP_RAW_POST_DATA — Raw POST data
$http_response_header — HTTP response headers
$argc — The number of arguments passed to script
$argv — Array of arguments passed to script
超級全域變數的安全性:
$came_from = $_SERVER['HTTP_REFERER'];
為了安全,使用這類變數之前最好使用PHP提供的htmlentities(),他會將所有的字元轉換成html實體,例如>,< 轉換成<,> 字串。
因此較佳的$_SERVER存取方式為:
因此較佳的$_SERVER存取方式為:
$came_from = htmlentities($_SERVER['HTTP_REFERER']);
留言
張貼留言