首頁  >  文章  >  後端開發  >  php數組(Array函數)的處理

php數組(Array函數)的處理

不言
不言原創
2018-04-14 17:22:128862瀏覽

相關推薦:《PHP ARRAY 陣列函數(專題)

##PHP Array 是什麼?

陣列就是一組資料的集合,把一系列資料組織起來,形成一個可操作的整體。 PHP 中的陣列較為複雜,但比其他許多高階語言中的陣列更為靈活。

數組 array 是一組有序的變量,其中每個值被稱為一個元素。每個元素由一個特殊的標識符來區分,這個標識符稱為鍵(也稱為下標)。

陣列中的每個實體都包含兩項,分別是鍵(key)和值(value)。可以透過鍵值來取得對應的陣列元素,這些鍵可以是數值鍵,也可以是關聯鍵。如果說變數是儲存單一值的容器,那麼陣列就是儲存多個值的容器。

PHP 陣列比其他高階語言中的陣列更靈活,不但支援以數字為鍵名的索引數組,而且支援以字串或字串、數字混合為鍵名的關聯數組。而在其他高階語言中,如 Java 或 C 等語言的數組,則只支援數字索引數組。

PHP 陣列的結構如下圖所示:

php數組(Array函數)的處理

#在PHP 中,有三種陣列類型:

  • 索引數組:帶有數字索引的數組

  • 關聯數組:帶有指定鍵的數組

  • 多維數組:包含一個或多個陣列的陣列

推薦影片教學:

#1、《

PHP函數之array陣列函數視訊講解

2、《

PHP基本文法(玉女心經版)

3、《

PHP字串處理(玉女心經版)

推薦學習手冊:《

php完全自學手冊

#PHP Array 使用

PHP數組的定義

[1,  5,  1.1,  'abc'  true,  false] //可以存储任何数据,此时为'默认下标',

[2=>1,  5=>5,  3=>1.1,  7=>'abc'  0=>true]//下标可以任意设定(无需顺序,无需连续)

[2=>1,  5,  1=>1.1,  'abc'  0=>true]//可以加下标,也可以不加(默认下标),下标分别是:2,3,1,4,0

//默认下标规则:前面已经用过的最大数字下标+1

[2=>1,  'dd'=>5,  1=>1.1,  'abc'  0=>true]//混合下标,同样遵循默认下标规则

[-2=>1,  'dd'=>5,  1.1,  'abc'  true]; //负数下标不算在整数下标中,而只当作字符下标

//则最好3项的下标是:0, 1, 2

[2.7=>1,  'dd'=>5,  1=>1.1,  'abc'  0=>true]//浮点数下标为自动转换为整数,且直接抹掉小数

['2.7' =>1,  'dd'=>5,  '11'=>1.1,  'abc'  true]//纯数字字符串下标,当作数字看待,

//则此时下标为:2, 'dd', 11, 12, 13

[2=>1,  'dd'=>5,  true=>1.1,  'abc'  false=>true]//布尔值当下标,则true为1,false为0;

[2=>1,  'dd'=>5,  2=>1.1,  'abc'  true]//如果下标跟前面的重复,则单纯覆盖前面同名下标的值

關聯數組

$array = [
    'name' => 'zhaosi',
    'age' => 20,
    'sex' => '女'
];

多維數組


$array = [
    [
        'name' => 'xiaoming',
        'age' => 17,
        'sex' => '男'
    ],
    [
        'name' => 'wanghua',
        'age' => 16,
        'sex' => '女'
    ],
    [
        'name' => 'zhaosi',
        'age' => 20,
        'sex' => '女'
    ],
    [
        'name' => 'zhangsan',
        'age' => 22,
        'sex' => '男'
    ],
    [
        'name' => 'wangli',
        'age' => 12,
        'sex' => '女'
    ],
    [
        'name' => 'zhuhua',
        'age' => 14,
        'sex' => '男'
    ]
];

數組歷遍

$array = [
    [
        'name' => 'xiaoming',
        'age' => 17,
        'sex' => '男'
    ],
    [
        'name' => 'wanghua',
        'age' => 16,
        'sex' => '女'
    ],
    [
        'name' => 'zhaosi',
        'age' => 20,
        'sex' => '女'
    ],
    [
        'name' => 'zhangsan',
        'age' => 22,
        'sex' => '男'
    ],
    [
        'name' => 'wangli',
        'age' => 12,
        'sex' => '女'
    ],
    [
        'name' => 'zhuhua',
        'age' => 14,
        'sex' => '男'
    ]
];



foreach ($array as $key => $value) {
    echo $value['name'];
    echo $value['age'];
    echo $value['sex'];
}

輸出結果


xiaoming
17
男
wanghua
16
女
zhaosi
20
女
zhangsan
22
男
wangli
12
女
zhuhua
14
男

常用PHP陣列函數

#1、count() 函數的作用是計算陣列中的元素數量或物件中屬性個數

int count(mixed var[,int mode])

第一個參數是必須的,傳人個計算的陣列或物件。第二個參數是可選,規定函數的模式是否遞歸地計算多維數組中數組的元素個數,可能的值是0 或1,0為預設值,不檢測多維數組,為1則檢測多維數組

範例:

$a = array(
    "a",
    "b",
    "c",
    "d"
);
echo count($a); //输出个数4
$b = array(
    "a" => array(
        1,
        2,
        3
    ) ,
    "b" => array(
        4,
        5,
        6
    )
);
echo count($b, 1); //输出 8
echo count($b); //输出 2y([b]=>2 [d]=>4)

2、array_count_values() 函數用於統計數組中所有值出現的次數,該函數只有一個參數

array array_count_values(array input)

參數規定輸入數組,傳回一個數組,其元素的鍵名是原始數組的值,鍵值是該值在原始數組中出現的次數

範例:

$array=array(1,"a",1,"b","a");
$newarray=array_count_values($array);
print_r($newarray);//输出array([1]=>2 [a]=>2 [b]=>1)

##3 、array_unique()函數用於刪除數組中重複的值,並傳回沒有重複值的新數組

array array_unique(array array)

參數需要接受一個數組,當數組中幾個元素的值相等時,只保留第一個元素,其他元素被刪除,並且傳回的新數組中鍵名不變,array_unique()先將值作為字串排序,然後對每個值只保留第一個遇到的鍵名,接著忽略所有後面的鍵名

範例:

$a=array("a"=>1,"b"=>2,"c"=>1);
print_r(array_unique($a));//输出 array([a]=>1 [b]=>2)

4、array_filter() 函數用回呼函數過濾數組中元素,傳回按使用者自訂函數過濾後的陣列

array array_filter(array input [,callback callback])

參數:第一參數是必選項,要求輸入一個被過濾的數組,第二參數可選,將使用者自訂的函數名稱以字串形式傳入,如果自訂過濾函數傳回true,則被操作的數組的目前值就會包含在傳回的結果數組中,並將結果組成一個新數組,如果原始數組是一個關聯數組,則鍵名保持不變。

範例:

function myFun($var) {
    if ($var % 2 == 0) {
        return true;
    }
}
$array = array(
    "a" => 1,
    "b" => 2,
    "c" => 3,
    "d" => 4
);
print_r($array, "myFun"); //输出 array([b]=>2 [d]=>4)

5、array_walk()函數對陣列中的每個元素套用回呼函數處理,如果成功傳回true,否則回傳false

#
bool array_walk( array &array,callback funcname [,mixed userdata])

第一個參數是必須,要求輸入一個被指定的回呼函數處理的數組,第二個參數傳人用戶定義的回調函數,用於操作傳人第一參數的數組

範例:

function myFunc1($value, $key) {
    echo "key=$key value=$value";
}
$a = ["a" => "lin1", "b" => "lin2", "c" => "lin3"];
array_walk($a, "myFunc1");
function myFunc2($value, $key, $str) {
    echo "$key $value";
}
array_walk($a, "myFunc2");
function myFunc3($value, $key) {
    $value = "lin.su";
}
array_walk($a, "myFunc3");
print_r($a); //$a 是一个引用数组

6、array_map()函數可以處理多個數組,將回呼函數作用到給定數組的元素上,並傳回使用者自訂函數作用後數組。

array array_map(callback callback,array arr1[,arry ....])

範例:

function myFunc($v1, $v2) {
    if ($v1 == $v2) {
        return "same";
    }
    return "different";
}
$a = [1, 2, 3];
$b = [1, 4, 3];
print_r(array_map("myFunc", $a, $b)); //输出 array([0]=>same [1]=>difference [2]=>same)
print_r(array_map(null, $a, $b));

輸出:

array(
[0]=>array([0]=>1 [1]=>2 [2]=>3)
[1]=>array([0]=>1 [1]=>2 [2]=>3)
)

PHP 陣列函數

########
函數 描述
#array() #建立陣列。
array_change_key_case() 把陣列中所有鍵改為小寫或大寫。
array_chunk() 把一個陣列分割成新的陣列區塊。
array_column() 傳回輸入陣列中某個單一列的值。
array_combine() 透過合併兩個陣列來建立一個新陣列。
array_count_values() 用於統計數組中所有值出現的次數。
array_diff() 比較數組,傳回差集(只比較鍵值)。
array_diff_assoc() 比較數組,傳回差集(比較鍵名和鍵值)。
array_diff_key() 比較數組,傳回差集(只比較鍵名)。
array_diff_uassoc() 比較數組,傳回差集(比較鍵名和鍵值,使用使用者自訂的鍵名比較函數)。
array_diff_ukey() 比較數組,傳回差集(只比較鍵名,使用使用者自訂的鍵名比較函數)。
array_fill() 用給定的鍵值填入陣列。
array_fill_keys() 用指定鍵名的給定鍵值填入陣列。
array_filter() 用回呼函數過濾陣列中的元素。
array_flip() 交換陣列中的鍵和值。
array_intersect() 比較數組,傳回交集(只比較鍵值)。
array_intersect_assoc() 比較數組,傳回交集(比較鍵名和鍵值)。
array_intersect_key() 比較數組,傳回交集(只比較鍵名)。
array_intersect_uassoc() 比較數組,傳回交集(比較鍵名和鍵值,使用使用者自訂的鍵名比較函數)。
array_intersect_ukey() 比較數組,傳回交集(只比較鍵名,使用使用者自訂的鍵名比較函數)。
array_key_exists() 檢查指定的鍵名是否存在於陣列中。
array_keys() 傳回陣列中所有的鍵名。
array_map() 把陣列中的每個值送到使用者自訂函數,傳回新的值。
array_merge() 把一個或多個數字組合成一個陣列。
array_merge_recursive() 遞歸地合併一個或多個陣列。
array_multisort() 對多個陣列或多維數組進行排序。
array_pad() 用值將陣列填入指定長度。
array_pop() 刪除陣列的最後一個元素(出堆疊)。
array_product() 計算陣列中所有值的乘積。
array_push() 將一個或多個元素插入陣列的末端(入堆疊)。
array_rand() 傳回陣列中一個或多個隨機的鍵。
array_reduce() 透過使用使用者自訂函數,以字串傳回陣列。
array_replace() 使用後面陣列的值來取代第一個陣列的值。
array_replace_recursive() 遞歸地使用後面陣列的值來取代第一個陣列的值。
array_reverse() 以相反的順序傳回陣列。
array_search() 在陣列中搜尋給定的值並傳回鍵名。
array_shift() 刪除陣列中首個元素,並傳回被刪除元素的值。
array_slice() 傳回數組中被選定的部分。
array_splice() 刪除並取代陣列中指定的元素。
array_sum() 傳回陣列中值的和。
array_udiff() 比較數組,傳回差集(只比較值,使用一個使用者自訂的鍵名比較函數)。
array_udiff_assoc() 比較數組,傳回差集(比較鍵和值,使用內建函數比較鍵名,使用使用者自訂函數比較鍵值) 。
array_udiff_uassoc() 比較數組,傳回差集(比較鍵和值,使用兩個使用者自訂的鍵名比較函數)。
array_uintersect() 比較數組,傳回交集(只比較值,使用一個使用者自訂的鍵名比較函數)。
array_uintersect_assoc() 比較數組,傳回交集(比較鍵和值,使用內建函數比較鍵名,使用使用者自訂函數比較鍵值)。
array_uintersect_uassoc() 比較數組,傳回交集(比較鍵和值,使用兩個使用者自訂的鍵名比較函數)。
array_unique() 刪除陣列中的重複值。
array_unshift() 在陣列開頭插入一個或多個元素。
array_values() 傳回陣列中所有的值。
array_walk() 對陣列中的每個成員套用使用者函數。
array_walk_recursive() 對陣列中的每個成員遞歸地套用使用者函數。
arsort() 對關聯陣列依照鍵值進行降序排序。
asort() 對關聯陣列依照鍵值進行升序排序。
compact() 建立包含變數名稱和它們的值的陣列。
count() 傳回陣列中元素的數目。
current() 傳回陣列中的目前元素。
each() 傳回數組中目前的鍵/值對。
end() 將陣列的內部指標指向最後一個元素。
extract() 從陣列中將變數匯入到目前的符號表。
in_array() 檢查陣列中是否存在指定的值。
key() 從關聯陣列取得鍵名。
krsort() 對陣列依照鍵名逆向排序。
ksort() 對陣列依照鍵名排序。
list() 把陣列中的值賦給一些變數。
natcasesort() 以「自然排序」演算法對陣列進行不區分大小寫字母的排序。
natsort() 用「自然排序」演算法對陣列排序。
next() 將陣列中的內部指標向前移動一位。
pos() current() 的別名。
prev() 將陣列的內部指標倒回一位。
range() 建立包含指定範圍單元的陣列。
reset() 將陣列的內部指標指向第一個元素。
rsort() 對陣列逆向排序。
shuffle() 將陣列打亂。
sizeof() count() 的別名。
sort() 對陣列排序。
uasort() 使用使用者自訂的比較函數對陣列中的鍵值進行排序。
uksort() 使用使用者自訂的比較函數對陣列中的鍵名進行排序。
usort() 使用使用者自訂的比較函數對陣列進行排序。

以上是php數組(Array函數)的處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn