PHP-2

  1. 運算符
  • 優先級
結合方向 運算符 附加信息
clone new clone 和 new
[ array()
** 算術運算符
++ – ~ (int) (float) (string) (array) (object) (bool) @ 類型和遞增/遞減
instanceof 類型
! 邏輯運算符
* / % 算術運算符
+ - . 算術運算符和字符串運算符
<< >> 位運算符
< <= > >= 比較運算符
== != === !== <> <=> 比較運算符
& 位運算符和引用
^ 位運算符
l 位運算符
&& 邏輯運算符
ll 邏輯運算符
?? 比較運算符
? : ternary
= += -= *= **= /= .= %= &= l= ^= <<= >>= 賦值運算符
and 邏輯運算符
xor 邏輯運算符
or 邏輯運算符
  • 組合比較符 <=>

$c = $a <=> $b;

這句代碼的意思是

如果$a > $b, $c 的值爲1

如果$a == $b, $c 的值爲0

如果$a < $b, $c 的值爲-1

即:$c = $a > $b ? 1 : ( a==a==b ? 0 : -1 );

  • "="是右聯的,所以 $a = $b = $c 等同於 a=(a = (b = $c)
  • 位運算符

&(按位與),|(按位或),^(按位異或),~(按位取反)
&(按位與):對應位同時爲1時,在&運算後則爲1,否則爲0
|(按位或):對應位有一個爲1時,在|運算後則爲1,同爲0時則爲0
^ (按位異或):對應位不同時爲1時,在^ 運算後爲1,同時爲0時則爲0,同時爲1時^運算後也是0
~(按位取反):$ a+( ~$a)=-1 即 ~a = -(a+1)
原碼:一個整數,按照絕對值大小轉換成的二進制數,稱爲原碼。
8的原碼爲:0000 0000 0000 0000 0000 0000 0000 1000
反碼:將二進制數按位取反,所得的新二進制數稱爲原二進制數的反碼。取反操作指:1變0, 0變1。
8按位取反:1111 1111 1111 1111 1111 1111 1111 0111
補碼:反碼加1稱爲補碼。也就是說,要得到一個數的補碼,先得到反碼,然後將反碼加上1,所得數稱爲補碼。
正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1
反碼加1:1000 0000 0000 0000 0000 0000 000 1001;這樣就得負數的正值的補碼形式。也就是-9了。

例如:

$m=8;
$n=12;
$p=-109;
$mn=$m&$n;
echo $mn."<br>";  //8
$mn=$m|$n;
echo $mn."<br>"; //12
$mn=$m^$n;
echo $mn."<br>"; //4
$mn=~$m;
echo $mn."<br>"; //-9
$mn=~$p;
echo $mn."<br>"; //108

註釋:按位&後返回值是沒意義的。 主要是用來判斷$a 是否存在於 $c // 權限用法比較多。

    <?php
    $my_privilege = 15; // 1+2+4+8 擁有全部權限
    $Pri = '';
    $privilege_arr = array(8=>'增', 4=>'刪',2=>'改',1=>'查');
    foreach($privilege_arr as $k =>$v){
   	 $k & $my_privilege && $Pri .= '我有'.$v.'的權力<br>';
    }
    echo $Pri;
    ?>
  1. Switch 語句
<?php
$favcolor="red";
switch ($favcolor)
{
case "red":
case "blue":
    echo "你喜歡的顏色是藍色!";
    break;
case "green":
    echo "你喜歡的顏色是綠色!";
    break;
default:
    echo "你喜歡的顏色不是 紅, 藍, 或綠色!";
}
?>

  1. 數組函數
  • array()

創建數組。

  • range(low,high,step)

返回一個包含從 low 到 high 之間的元素的數組。
如果 low 參數大於 high 參數,則創建的數組將是從 high 到 low。

  • compact(var1,var2…)

創建一個包含變量名和它們的值的數組。
任何沒有變量名與之對應的字符串都被略過。
var1 必需。可以是帶有變量名的字符串,或者是一個變量數組。
var2,… 可選。可以是帶有變量名的字符串,或者是一個變量數組。允許多個參數。

<?php
$firstname = "Peter";
$lastname = "Griffin";
$age = "41";

$name = array("firstname", "lastname");
$result = compact($name, "location", "age");

print_r($result);
?>
//Array ( [firstname] => Peter [lastname] => Griffin [age] => 41 ) 
  • array_change_key_case(array,case)

返回帶有小寫字母的鍵的數組,或者返回帶有大寫字母的鍵的數組,或者如果 array 不是一個數組則返回 FALSE。

case可選,可能的值:
    CASE_LOWER - 默認值。將數組的鍵轉換爲小寫字母。
    CASE_UPPER - 將數組的鍵轉換爲大寫字母。
  • array_column(array,column_key,index_key)

返回輸入數組中某個單一列的值。
column_key 必需。需要返回值的列。該參數可以是 NULL,此時將返回整個數組(配合index_key 參數來重置數組鍵的時候,非常管用)。
index_key 可選。作爲返回數組的索引/鍵的列。

$a = array(
  array(
    'id' => 5698,
    'first_name' => 'Peter',
    'last_name' => 'Griffin',
  ),
  array(
    'id' => 4767,
    'first_name' => 'Ben',
    'last_name' => 'Smith',
  ),
  array(
    'id' => 3809,
    'first_name' => 'Joe',
    'last_name' => 'Doe',
  )
);

$last_names = array_column($a, 'last_name', 'id');
print_r($last_names);
/*
Array
(
  [5698] => Griffin
  [4767] => Smith
  [3809] => Doe
)

  • key()

返回當前內部指針所指向的數組元素的鍵名。

  • array_keys(array,value,strict)

返回數組中所有的鍵名。

value 	可選。您可以指定鍵值,然後只有該鍵值對應的鍵名會被返回。
strict 	可選。與 value 參數一起使用。可能的值:
    true - 返回帶有指定鍵值的鍵名。依賴類型,數字 5 與字符串 "5" 是不同的。
    false - 默認值。不依賴類型,數字 5 與字符串 "5" 是相同的。
  • array_values()

被返回的數組將使用數值鍵,從 0 開始且以 1 遞增。

  • extract(array,extract_rules,prefix)

從數組中將變量導入到當前的符號表。
array 必需。規定要使用的數組。
extract_rules 可選。extract() 函數將檢查每個鍵名是否爲合法的變量名,同時也檢查和符號表中已存在的變量名是否衝突。對不合法和衝突的鍵名的處理將根據此參數決定。
可能的值:
EXTR_OVERWRITE - 默認。如果有衝突,則覆蓋已有的變量。
EXTR_SKIP - 如果有衝突,不覆蓋已有的變量。
EXTR_PREFIX_SAME - 如果有衝突,在變量名前加上前綴 prefix。
EXTR_PREFIX_ALL - 給所有變量名加上前綴 prefix。
EXTR_PREFIX_INVALID - 僅在不合法或數字變量名前加上前綴 prefix。
EXTR_IF_EXISTS - 僅在當前符號表中已有同名變量時,覆蓋它們的值。其它的都不處理。
EXTR_PREFIX_IF_EXISTS - 僅在當前符號表中已有同名變量時,建立附加了前綴的變量名,其它的都不處理。
EXTR_REFS - 將變量作爲引用提取。導入的變量仍然引用了數組參數的值。
prefix 可選。如果 extract_rules 參數的值是 EXTR_PREFIX_SAME、EXTR_PREFIX_ALL、 EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS,則 prefix 是必需的。
該參數規定了前綴。前綴和數組鍵名之間會自動加上一個下劃線。

<?php
$a = "Original";
$my_array = array("a" => "Cat", "b" => "Dog", "c" => "Horse");

extract($my_array, EXTR_PREFIX_SAME, "dup");

echo "\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a";
?>
//$a = Original; $b = Dog; $c = Horse; $dup_a = Cat
  • array_key_exists(key,array)

檢查指定的鍵名是否存在於數組中。

  • in_array ( $needle , $haystack [, $strict = FALSE ] )

檢查數組中是否存在指定的值。
needle 必需。規定要在數組搜索的值。
haystack 必需。規定要搜索的數組。
strict 可選。如果該參數設置爲 TRUE,則 in_array() 函數檢查搜索的數據與數組的值的類型是否相同。

  • array_search(value,array,strict)

在數組中搜索給定的值,如果成功則返回相應的鍵名。
strict 可選。如果該參數被設置爲 TRUE,則函數在數組中搜索數據類型和值都一致的元素。可能的值:
true
false - 默認
如果設置爲 true,則在數組中檢查給定值的類型,數字 5 和字符串 5 是不同的。

  • array_count_values()

用於統計數組中所有值出現的次數。

  • each()

返回數組中當前的鍵/值對。

  • list()

把數組中的值賦給一些數組變量。

  • count()
    返回數組中元素的數目。
  • sizeof()

count() 的別名。

  • current()

返回數組中的當前元素。

  • pos()

current() 的別名。

  • end()

將數組的內部指針指向最後一個元素。

  • next()

將數組中的內部指針向後移動一位。

  • prev()

將數組的內部指針倒回一位。

  • reset()

將數組的內部指針指向第一個元素。

  • array_slice()

返回數組中的選定部分。

  • array_splice()

把數組中的指定元素去掉並用其它值取代。

  • array_replace()

使用後面數組的值替換第一個數組的值。

  • array_replace_recursive()

遞歸地使用後面數組的值替換第一個數組的值。

  • array_product()

計算數組中所有值的乘積。

  • array_sum()

返回數組中所有值的和。

  • array_reverse()

將原數組中的元素順序翻轉,創建新的數組並返回。

  • array_flip()

反轉/交換數組中的鍵名和對應關聯的鍵值。

  • shuffle()

把數組中的元素按隨機順序重新排列。

  • array_chunk()

把一個數組分割爲新的數組塊。

  • array_unshift()

在數組開頭插入一個或多個元素。

  • array_push()

將一個或多個元素插入數組的末尾(入棧)。

  • array_pop()

刪除數組中的最後一個元素(出棧)。

  • array_shift()

刪除數組中的第一個元素,並返回被刪除元素的值。

  • array_unique()

刪除數組中重複的值。

  • array_fill()

用給定的鍵值填充數組。

  • array_fill_keys()

用給定的指定鍵名的鍵值填充數組。

  • array_pad()

將指定數量的帶有指定值的元素插入到數組中。

  • array_combine()

通過合併兩個數組(一個爲鍵名數組,一個爲鍵值數組)來創建一個新數組。

  • array_merge()

把一個或多個數組合併爲一個數組。

  • array_merge_recursive()

遞歸地把一個或多個數組合併爲一個數組。

  • array_rand(array,number)

返回數組中的一個隨機鍵名,或者如果指定函數返回鍵名不只一個,則返回一個包含隨機鍵名的數組。

  • array_reduce(array,myfunction,initial)

發送數組中的值到用戶自定義函數,並返回一個字符串。
如果數組是空的或者初始值未傳遞,該函數返回 NULL。
array 必需。規定數組。
myfunction 必需。規定函數的名稱。
initial 可選。規定發送到函數處理的第一個值。

function myfunction($v1,$v2){
	return $v1 . "-" . $v2;
}
$a=array("Dog","Cat","Horse");
print_r(array_reduce($a,"myfunction",5));
//5-Dog-Cat-Horse 
  • array_map(myfunction,array1,array2,array3…)

將用戶自定義函數作用到數組中的每個值上,並返回用戶自定義函數作用後的帶有新的值的數組。

<?php
//使用一個用戶自定義函數來改變數組的值:
function myfunction($v)
{
if ($v==="Dog")
{
return "Fido";
}
return $v;
}
$a=array("Horse","Dog","Cat");
print_r(array_map("myfunction",$a));
//Array ( [0] => Horse [1] => Fido [2] => Cat ) 
?> 

//使用兩個數組:
 <?php
function myfunction($v1,$v2)
{
if ($v1===$v2)
{
return "same";
}
return "different";
}

$a1=array("Horse","Dog","Cat");
$a2=array("Cow","Dog","Rat");
print_r(array_map("myfunction",$a1,$a2));
//Array ( [0] => different [1] => same [2] => different ) 
?>

  • array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )

把輸入數組中的每個鍵值傳給回調函數。如果回調函數返回 true,則把輸入數組中的當前鍵值返回給結果數組。數組鍵名保持不變。
flag 可選。決定 callback 接收的參數形式:
ARRAY_FILTER_USE_KEY - callback 接受鍵名作爲的唯一參數
ARRAY_FILTER_USE_BOTH - callback 同時接受鍵名和鍵值

  • array_walk()

對數組中的每個成員應用用戶函數。

  • array_walk_recursive()

對數組中的每個成員遞歸地應用用戶函數。

  • array_diff()

比較數組,返回兩個數組的差集(只比較鍵值)。

  • array_diff_assoc()

比較數組,返回兩個數組的差集(比較鍵名和鍵值)。

  • array_diff_key()

比較數組,返回兩個數組的差集(只比較鍵名)。

  • array_diff_uassoc()

比較數組,返回兩個數組的差集(比較鍵名和鍵值,使用用戶自定義的鍵名比較函數)。

  • array_diff_ukey()

比較數組,返回兩個數組的差集(只比較鍵名,使用用戶自定義的鍵名比較函數)。

  • array_intersect()

比較數組,返回兩個數組的交集(只比較鍵值)。

  • array_intersect_assoc()

比較數組,返回兩個數組的交集(比較鍵名和鍵值)。

  • array_intersect_key()

比較數組,返回兩個數組的交集(只比較鍵名)。

  • array_intersect_uassoc()

比較數組,返回兩個數組的交集(比較鍵名和鍵值,使用用戶自定義的鍵名比較函數)。

  • array_intersect_ukey()

比較數組,返回兩個數組的交集(只比較鍵名,使用用戶自定義的鍵名比較函數)。

  • array_udiff()

比較數組,返回兩個數組的差集(只比較鍵值,使用一個用戶自定義的鍵名比較函數)。

  • array_udiff_assoc()

比較數組,返回兩個數組的差集(比較鍵名和鍵值,使用內建函數比較鍵名,使用用戶自定義函數比較鍵值)。

  • array_udiff_uassoc()

比較數組,返回兩個數組的差集(比較鍵名和鍵值,使用兩個用戶自定義的鍵名比較函數)。

  • array_uintersect()

比較數組,返回兩個數組的交集(只比較鍵值,使用一個用戶自定義的鍵名比較函數)。

  • array_uintersect_assoc()

比較數組,返回兩個數組的交集(比較鍵名和鍵值,使用內建函數比較鍵名,使用用戶自定義函數比較鍵值)。

  • array_uintersect_uassoc()

比較數組,返回兩個數組的交集(比較鍵名和鍵值,使用兩個用戶自定義的鍵名比較函數)。

  • sort()

對數值數組進行升序排序。

  • rsort()

對數值數組進行降序排序。

  • uasort()

使用用戶自定義的比較函數對數組中的鍵值進行排序。

  • uksort()

使用用戶自定義的比較函數對數組中的鍵名進行排序。

  • usort()

使用用戶自定義的比較函數對數組進行排序。

  • arsort()
    對關聯數組按照鍵值進行降序排序。
  • asort()

對關聯數組按照鍵值進行升序排序。

  • krsort()

對關聯數組按照鍵名降序排序。

  • ksort()

對關聯數組按照鍵名升序排序。

  • natcasesort()

用"自然排序"算法對數組進行不區分大小寫字母的排序。

  • natsort()

用"自然排序"算法對數組排序。

  • array_multisort()

對多個數組或多維數組進行排序。

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