$GLOBALS(超全局變量) — 引用全局做用域中可用的所有變量, 一個包含了所有變量的全局組合數組。變量的名字就是數組的鍵
php
<?php
function test() {
$foo = "local variable";
echo 'GLOBALS: ' . $GLOBALS["foo"] . "\n";
echo '$foo in current scope: ' . $foo . "\n";
}
$foo = "Example content";
test();
?>
//結果
GLOBALS:Example content
$foo in current scope:local variable複製代碼
global的做用是定義全局變量,可是這個全局變量不是應用於整個網站,而是應用於當前頁面,包括include或require的全部文件
html
使用關鍵字「global」你就能夠把全局數據導入到一個函數的局部範圍內
數組
<?php
$a = 1;
$b = 2;
function Sum()
{
global $a, $b; //若是沒有全局變量global在方法內是不能得到$a,$b值的
$b = $a + $b;
}
Sum();
echo $b;
?>
//結果
3複製代碼
在函數體內定義的global變量,函數體外能夠使用,在函數體外定義的global變量不能在函數體內使用
bash
<?php
global $a;
$a=123; //必須分開賦值
function f() {
echo $a; //錯誤
}
//再看看下面一例
function f() {
global $a;
$a=123;
}
f();
echo $a; //正確,能夠使用複製代碼
1.const用於類成員變量的定義,一經定義,不可修改。define不能夠用於類成員變量的定義,可用於全局常量。函數
2.const可在類中使用,define不能(通常是define在類外定義常量,const在類內定義常量)網站
3.const不能再條件語句中定義常量ui
<?php
if (...){const FOO = 'BAR'; // 無效的invalid
}if (...) {
define('FOO', 'BAR'); // 有效的valid
}
?>複製代碼
4.const採用普通的常量名稱,define能夠採用表達式做爲名稱
spa
<?php
const FOO = 'BAR';
for ($i = 0; $i < 32; ++$i) {
define('BIT_' . $i, 1 << $i);
}
?>複製代碼
5.const只能接受靜態的標量,而define能夠採用任何表達式
.net
<?php
const BIT_5 = 1 << 5; // 無效的invalid
define('BIT_5', 1 << 5); // 有效的valid
?>複製代碼
6.const定義的常量時大小寫敏感,而define能夠經過第三個參數(爲true表示大小寫不敏感)來指定大小寫是否敏感
code
<?php
define('FOO', 'BAR', true);
echo FOO; // BAR
echo foo; // BAR
?>複製代碼
7.const是語言結構,define是函數,const更快
array_multisort:對列表型二維數組排序
$data = array();
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
$volume = array_column($data,'volume');
$edition = array_column($data,'edition');
//按照volume升序排
array_multisort($volume,SORT_ASC,$data);
//按照volume升序排,volume同樣就按照edition降序排
//array_multisort($volume,SORT_ASC,$edition,SORT_DESC,$data);
print_r($data);複製代碼
str_repeat() 函數把字符串重複指定的次數。
echo str_repeat("Shanghai",2);
//結果:ShanghaiShanghai複製代碼
用回調函數過濾數組中的單元(文檔)
大部分能夠用來過濾數組空的元素
$data = [1,0,3,false,'',null,"tom",'0'];
print_r(array_filter($data));
//結果
Array
(
[0] => 1
[2] => 3
[6] => tom
)複製代碼
有回調函數的時候(該函數把輸入數組中的每一個鍵值傳給回調函數。若是回調函數返回 true,則把輸入數組中的當前鍵值返回結果數組中,若是是false就不返回。數組鍵名保持不變):
$arr = ['a','b',1,2,3];
$new_arr = array_filter($arr,function($val){
return is_numeric($val); //過濾不是數字的值,is_numeric返回bool值
});
print_r($new_arr);
//結果:
Array
(
[2] => 1
[3] => 2
[4] => 3
)
複製代碼
彈出數組最後一個單元(出棧),原來的數據中將不再也不有最後一個值了。
$data = [1, 2, 3, 4];
print_r(array_pop($data));
//結果:
4複製代碼
$data = [
[
'name' => 'xxx',
'age' => 12
],
[
'name' => 'yyy',
'age' => 20
],
[
'name' => 'zzz',
'age' => 30
]
];
print_r(array_pop($data));
//結果:
Array
(
[name] => zzz
[age] => 30
)複製代碼
第一個單元移出並做爲結果返回,將 array
的長度減一併將全部其它單元向前移動一位。全部的數字鍵名將改成從零開始計數,文字鍵名將不變。
$data = [1, 2, 3, 4];
print_r(array_shift($data));
print_r($data);
//結果:
1
Array
(
[0] => 2
[1] => 3
[2] => 4
)複製代碼
$data = [
[
'name' => 'xxx',
'age' => 12
],
[
'name' => 'yyy',
'age' => 20
],
[
'name' => 'zzz',
'age' => 30
]
];
print_r(array_shift($data));
print_r($data);
//結果:
Array
(
[name] => xxx
[age] => 12
)
Array
(
[0] => Array
(
[name] => yyy
[age] => 20
)
[1] => Array
(
[name] => zzz
[age] => 30
)
)複製代碼
截取數組
$data = [1, 2, 3, 4];
print_r(array_slice($data,1,2));
print_r(array_slice($data,-1,1));
//結果:
Array
(
[0] => 2
[1] => 3
)
Array
(
[0] => 4
)複製代碼
$data = [
[
'name' => 'xxx',
'age' => 12
],
[
'name' => 'yyy',
'age' => 20
],
[
'name' => 'zzz',
'age' => 30
]
];
print_r(array_slice($data,1,2));
print_r(array_slice($data,-1,1));
//結果:
Array
(
[0] => Array
(
[name] => yyy
[age] => 20
)
[1] => Array
(
[name] => zzz
[age] => 30
)
)
Array
(
[0] => Array
(
[name] => zzz
[age] => 30
)
)複製代碼
爲數組的每一個元素執行回調函數,返回一個新的數組
<?php
$arr = [1,3,5];
$res = array_map(function($val){
return $val*10; //每一個值乘10
},$arr);
print_r($res);
print_r($arr);
//結果:
Array
(
[0] => 10
[1] => 30
[2] => 50
)
Array
(
[0] => 1
[1] => 3
[2] => 5
)複製代碼
多個數組的時候:
$arr1 = [1,2,3,4,5];
$arr2 = [6,7,8,9,10];
$res = array_map(function($val1,$val2){
return $val1 + $val2;
},$arr1,$arr2);
print_r($res);
//結果:
Array
(
[0] => 7
[1] => 9
[2] => 11
[3] => 13
[4] => 15
)
複製代碼
使用用戶自定義函數對數組中的每一個元素作回調處理,成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
<?php
//將數組中的元素用於某種操做
$arr = ['a','b','c'];
array_walk($arr,function(&$val,$key){
$val .= $val;
});
print_r($arr);
//結果:
Array
(
[0] => aa
[1] => bb
[2] => cc
)
複製代碼