一、array_change_key_case — 將 array 數(shù)組中的所有鍵名改為全小寫或大寫
array_change_key_case ---- 針對(duì)關(guān)聯(lián)數(shù)組
array_change_key_case ( array $array [, int $case = CASE_LOWER ] ) : array
$case值:CASE_UPPER (大寫),CASE_LOWER(小寫,默認(rèn)值)
array_change_key_case()將 array 數(shù)組中的所有鍵名改為全小寫或大寫。本函數(shù)不改變數(shù)字索引。
—————————————————————————————————————————————
二、array_chunk — 將一個(gè)數(shù)組分割成多個(gè) --(常用)
?array_chunk:將一個(gè)數(shù)組分割成多個(gè)數(shù)組,其中每個(gè)數(shù)組的單元數(shù)目由 size 決定。最后一個(gè)數(shù)組的單元數(shù)目可能會(huì)少于 size 個(gè)
array_chunk ( array $array , int $size [, bool $preserve_keys = false ] ) : array
size
??每個(gè)數(shù)組的單元數(shù)目
preserve_keys
??設(shè)為 TRUE,可以使 PHP 保留輸入數(shù)組中原來(lái)的鍵名。如果你指定了 FALSE,那每個(gè)結(jié)果數(shù)組將用從零開始的新數(shù)字索引。默認(rèn)值是 FALSE。
Example #1 array_chunk() 例子
$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));
print_r(array_chunk($input_array, 2, true));
?>
以上例程會(huì)輸出:
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[0] => c
[1] => d
)
[2] => Array
(
[0] => e
)
)
Array
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[2] => c
[3] => d
)
[2] => Array
(
[4] => e
)
)
—————————————————————————————————————————————
三、array_column — 返回?cái)?shù)組中指定的一列 -- 常用
array_column ( array $input , mixed $column_key [, mixed $index_key = null ] ) : array
?array_column()返回input數(shù)組中鍵值為column_key的列, 如果指定了可選參數(shù)index_key,那么input數(shù)組中的這一列的值將作為返回?cái)?shù)組中對(duì)應(yīng)值的鍵。
參數(shù)說(shuō)明
input
?需要取出數(shù)組列的多維數(shù)組。 如果提供的是包含一組對(duì)象的數(shù)組,只有 public 屬性會(huì)被直接取出。 為了也能取出 private 和 protected 屬性,類必須實(shí)現(xiàn) __get() 和 __isset() 魔術(shù)方法。
column_key
?需要返回值的列,它可以是索引數(shù)組的列索引,或者是關(guān)聯(lián)數(shù)組的列的鍵,也可以是屬性名。 也可以是NULL,此時(shí)將返回整個(gè)數(shù)組(配合index_key參數(shù)來(lái)重置數(shù)組鍵的時(shí)候,非常管用)
index_key
?作為返回?cái)?shù)組的索引/鍵的列,它可以是該列的整數(shù)索引,或者字符串鍵值。
將鍵與值合并
返回值
?從多維數(shù)組中返回單列數(shù)組。
—————————————————————————————————————————————
四、array_combine — 創(chuàng)建一個(gè)數(shù)組,用一個(gè)數(shù)組的值作為其鍵名,另一個(gè)數(shù)組的值作為其值 -- (較常用)
array_combine ( array $keys , array $values ) : array
?返回一個(gè) array,用來(lái)自 keys 數(shù)組的值作為鍵名,來(lái)自 values 數(shù)組的值作為相應(yīng)的值。
array_combine()
exp:
$arr= ['姓名','年齡','身高','性別'];
$arrValue = ['小米','18','180','男'];
var_dump(array_combine($arr, $arrValue));
結(jié)果:
array (size=4)
'姓名' => string '小米' (length=6)
'年齡' => string '18' (length=2)
'身高' => string '180' (length=3)
'性別' => string '男' (length=3)
—————————————————————————————————————————————
五、array_count_values — 統(tǒng)計(jì)數(shù)組中所有的值
array_count_values ( array $array ) : array
?array_count_values() 返回一個(gè)數(shù)組: 數(shù)組的鍵是 array 里單元的值; 數(shù)組的值是 array 單元的值出現(xiàn)的次數(shù)。
Example #1 array_count_values() 例子
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>
以上例程會(huì)輸出:
Array
(
[1] => 2
[hello] => 2
[world] => 1
)
—————————————————————————————————————————————
六、計(jì)算數(shù)組的交集“家族”
1、array_diff_assoc — 帶索引檢查計(jì)算數(shù)組的差集(比較鍵與值)
Example #1 array_diff_assoc() 例子
? 下面的例子中可以看到鍵值對(duì) "a" => "green" 在兩個(gè)數(shù)組中都有,因此不在本函數(shù)的輸出中。與此不同,鍵值對(duì) 0 => "red" 出現(xiàn)在輸出中是因?yàn)榈诙€(gè)參數(shù)中的 "red" 的鍵名是 1。
<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
以上例程會(huì)輸出:
Array
(
[b] => brown
[c] => blue
[0] => red
)
Example #2 array_diff_assoc() example
? 鍵值對(duì) key => value 中的兩個(gè)值僅在 (string)elem2 時(shí)被認(rèn)為相等。也就是說(shuō)使用了嚴(yán)格檢查,字符串的表達(dá)必須相同。
array_merge() 函數(shù)用于把一個(gè)或多個(gè)數(shù)組合并為一個(gè)數(shù)組。
提示:您可以向函數(shù)輸入一個(gè)或者多個(gè)數(shù)組。
注釋:如果兩個(gè)或更多個(gè)數(shù)組元素有相同的鍵名,則最后的元素會(huì)覆蓋其他元素。
注釋:如果您僅僅向 array_merge() 函數(shù)輸入一個(gè)數(shù)組,且鍵名是整數(shù),則該函數(shù)將返回帶有整數(shù)鍵名的新數(shù)組,其鍵名以 0 開始進(jìn)行重新索引
注釋: 如果為索引數(shù)組則不會(huì)覆蓋元素
<?php
$array1 = array(0, 1, 2);
$array2 = array("00", "01", "2");
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
以上例程會(huì)輸出:
Array
(
[0] => 0
[1] => 1
)
Note: 注意本函數(shù)只檢查了多維數(shù)組中的一維。當(dāng)然可以用 array_diff_assoc(array2[0]); 檢查更深的維度。
Note: 使用更多的鍵比較相似數(shù)組時(shí),確保你傳入?yún)?shù)的順序是正確的。 新的數(shù)組應(yīng)該是在列表里的第一個(gè)。
2、array_diff_key — 使用鍵名比較計(jì)算數(shù)組的差集
Example #1 array_diff_key() 例
? 在 key => value 對(duì)中的兩個(gè)鍵名僅在 (string)key2 時(shí)被認(rèn)為相等。換句話說(shuō),執(zhí)行的是嚴(yán)格類型檢查,因此字符串的表達(dá)必須完全一樣。
<?php
$array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8);
var_dump(array_diff_key($array1, $array2));
?>
以上例程會(huì)輸出:
array(2) {
["red"]=>
int(2)
["purple"]=>
int(4)
}
注釋:以上函數(shù)是用$array1來(lái)和$array2比較返回$array1在$array2中不一樣的值
3、array_diff_uassoc — 用用戶提供的回調(diào)函數(shù)做索引檢查來(lái)計(jì)算數(shù)組的差集(自定義函數(shù)來(lái)控制)
Example #1 array_diff_uassoc() 例子
? 下面的例子中 "a" => "green" 出現(xiàn)在兩個(gè)數(shù)組中因此不在函數(shù)的輸出中。但是 0 => "red" 卻在輸出中,因?yàn)榈诙€(gè)參數(shù)中的 "red" 的鍵名是 1。
<?php
function key_compare_func($a, $b)
{
if ($a === $b) {
return 0;
}
return ($a > $b)? 1:-1;
}
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_uassoc($array1, $array2, "key_compare_func");
print_r($result);
?>
以上例程會(huì)輸出:
Array
(
[b] => brown
[c] => blue
[0] => red
)
4、array_diff_ukey — 用回調(diào)函數(shù)對(duì)鍵名比較計(jì)算數(shù)組的差集
Example #1 array_diff_ukey() 例子
<?php
function key_compare_func($key1, $key2)
{
if ($key1 == $key2)
return 0;
else if ($key1 > $key2)
return 1;
else
return -1;
}
$array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8);
var_dump(array_diff_ukey($array1, $array2, 'key_compare_func'));
?>
以上例程會(huì)輸出:
array(2) {
["red"]=>
int(2)
["purple"]=>
int(4)
}
5、array_diff — 計(jì)算數(shù)組的差集(很常見(jiàn)) --- 比較數(shù)組中的值
Example #1 array_diff() 例子
<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
?>
在 $array1 中多次出現(xiàn)的值一樣處理,輸出結(jié)果為:
Array
(
[1] => blue
)
—————————————————————————————————————————————
七、array_flip — 交換數(shù)組中的鍵和值
array_flip ( array $array ) : array
?array_flip() 返回一個(gè)反轉(zhuǎn)后的 array,例如 array 中的鍵名變成了值,而 array 中的值成了鍵名。
注意 :array 中的值需要能夠作為合法的鍵名(例如需要是 integer (整型)或者 string(字符串))。如果類型不對(duì),將出現(xiàn)一個(gè)警告,并且有問(wèn)題的鍵/值對(duì)將不會(huì)出現(xiàn)在結(jié)果里。
如果同一個(gè)值出現(xiàn)多次,則最后一個(gè)鍵名將作為它的值,其它鍵會(huì)被丟棄
失敗了會(huì)返回NULL
Example #1 array_count_values() 例子
<?php
$input = array("oranges", "apples", "pears");
$flipped = array_flip($input);
print_r($flipped);
?>
以上結(jié)果輸出為:
Array
(
[oranges] => 0
[apples] => 1
[pears] => 2
)
Example #2 array_flip() 例子 : 沖突
<?php
$input = array("a" => 1, "b" => 1, "c" => 2);
$flipped = array_flip($input);
print_r($flipped);
?>
以上結(jié)果輸出為:
Array
(
[1] => b
[2] => c
)
數(shù)組$input中以'a'為鍵的不會(huì)返回--因?yàn)閷?duì)應(yīng)的值為1
—————————————————————————————————————————————
八、array_intersect -- 檢查數(shù)組的交集家族 (都以第一個(gè)數(shù)組為主值)
??(一)array_intersect_assoc — 帶索引檢查計(jì)算數(shù)組的交集
array_intersect_assoc ( array $array1 , array $array2 [, array $... ] ) : array
array_intersect_assoc() 返回一個(gè)數(shù)組,該數(shù)組包含了所有在
array1中也同時(shí)出現(xiàn)在所有其它參數(shù)數(shù)組中的值。注意和array_intersect() 不同的是鍵名也用于比較。
鍵與值必須都一樣才會(huì)返回
Example #1 array_intersect_assoc() 例子
<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "b" => "yellow", "blue", "red");
$result_array = array_intersect_assoc($array1, $array2);
print_r($result_array);
?>
以上例程會(huì)輸出:
Array
(
[a] => green
)
—————————————————————————————————————————————
??(二)array_intersect_key — 使用鍵名比較計(jì)算數(shù)組的交集
array_intersect_key ( array $array1 , array $array2 [, array $... ] ) : array
array_intersect_key() 返回一個(gè)數(shù)組,該數(shù)組包含了所有出現(xiàn)在 array1 中并同時(shí)出現(xiàn)在所有其它參數(shù)數(shù)組中的鍵名的值。
<?php
$array1 = array('blue' => 1, 'red' => 2, 'green' => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan' => 8);
var_dump(array_intersect_key($array1, $array2));
?>
以上例程會(huì)輸出:
array(2) {
["blue"]=>
int(1)
["green"]=>
int(3)
}
鍵名一樣就行,但返回的值是以第一個(gè)數(shù)組為主
(三)array_intersect — 計(jì)算數(shù)組的交集
array_intersect ( array $array1 , array $array2 [, array $... ] ) : array
array_intersect() 返回一個(gè)數(shù)組,該數(shù)組包含了所有在 array1 中也同時(shí)出現(xiàn)在所有其它參數(shù)數(shù)組中的值。注意鍵名保留不變。
Example #1 array_intersect() 例子
<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);
?>
以上例程會(huì)輸出:
Array
(
[a] => green
[0] => red
)
Note: 以上系列函數(shù)中對(duì)比時(shí)兩個(gè)單元僅在 (string)
elem2 時(shí)被認(rèn)為是相同的。也就是說(shuō),當(dāng)字符串的表達(dá)是一樣的時(shí)候。
—————————————————————————————————————————————
九、array_key_exists — 檢查數(shù)組里是否有指定的鍵名或索引(別名: key_exists)
array_key_exists ( mixed $key , array $array ) : bool
數(shù)組里有鍵 key 時(shí),array_key_exists() 返回 TRUE。 key 可以是任何能作為數(shù)組索引的值。
Note:
array_key_exists() 僅僅搜索第一維的鍵。 多維數(shù)組里嵌套的鍵不會(huì)被搜索到。
—————————————————————————————————————————————
十、array_keys — 返回?cái)?shù)組中部分的或所有的鍵名
array_keys ( array $array [, mixed $search_value = null [, bool $strict = false ]] ) : array
參數(shù)
input
一個(gè)數(shù)組,包含了要返回的鍵。
search_value
如果指定了這個(gè)參數(shù),只有包含這些值的鍵才會(huì)返回。
strict
判斷在搜索的時(shí)候是否該使用嚴(yán)格的比較(===)。
—————————————————————————————————————————————
返回值
返回 input 里的所有鍵。
Example #1 array_keys() 例子
<?php
$array = array(0 => 100, "color" => "red");
print_r(array_keys($array));
$array = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($array, "blue"));
$array = array("color" => array("blue", "red", "green"),
"size" => array("small", "medium", "large"));
print_r(array_keys($array));
?>
以上例程會(huì)輸出:
Array
(
[0] => 0
[1] => color
)
Array
(
[0] => 0
[1] => 3
[2] => 4
)
Array
(
[0] => color
[1] => size
)
—————————————————————————————————————————————
十一、array_merge_recursive — 遞歸地合并一個(gè)或多個(gè)數(shù)組
array_merge_recursive ( array $array1 [, array $... ] ) : array
array_merge_recursive()將一個(gè)或多個(gè)數(shù)組的單元合并起來(lái),一個(gè)數(shù)組中的值附加在前一個(gè)數(shù)組的后面。返回作為結(jié)果的數(shù)組。注:無(wú)論是索引數(shù)組還是關(guān)聯(lián)數(shù)組
??如果輸入的數(shù)組中有相同的字符串鍵名,則這些值會(huì)被合并到一個(gè)數(shù)組中去,這將遞歸下去,因此如果一個(gè)值本身是一個(gè)數(shù)組,本函數(shù)將按照相應(yīng)的條目把它合并為另一個(gè)數(shù)組。需要注意的是,如果數(shù)組具有相同的數(shù)值鍵名,后一個(gè)值將不會(huì)覆蓋原來(lái)的值,而是附加到后面。
Example #1 array_merge_recursive() 例子
<?php
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
?>
以上例程會(huì)輸出:
Array
(
[color] => Array
(
[favorite] => Array
(
[0] => red
[1] => green
)
[0] => blue
)
[0] => 5
[1] => 10
)
—————————————————————————————————————————————
十二、array_merge — 合并一個(gè)或多個(gè)數(shù)組
array_merge ( array $array1 [, array $... ] ) : array
array_merge()將一個(gè)或多個(gè)數(shù)組的單元合并起來(lái),一個(gè)數(shù)組中的值附加在前一個(gè)數(shù)組的后面。返回作為結(jié)果的數(shù)組。
?如果輸入的數(shù)組中有相同的字符串鍵名,則該鍵名后面的值將覆蓋前一個(gè)值。然而,如果數(shù)組包含數(shù)字鍵名,后面的值將不會(huì)覆蓋原來(lái)的值,而是附加到后面。
?如果只給了一個(gè)數(shù)組并且該數(shù)組是數(shù)字索引的,則鍵名會(huì)以連續(xù)方式重新索引。
Example #1 array_merge() 例子
<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>
以上例程會(huì)輸出:
Array
(
[color] => green
[0] => 2
[1] => 4
[2] => a
[3] => b
[shape] => trapezoid
[4] => 4
)
如果你想完全保留原有數(shù)組并只想新的數(shù)組附加到后面,用 + 運(yùn)算符(同鍵名時(shí)保留第一個(gè),忽略第二個(gè))
Example #2 Simple array_merge() 例子
<?php
$array1 = array();
$array2 = array(1 => "data");
$result = array_merge($array1, $array2);
?>
以上例程會(huì)輸出:(別忘了數(shù)字鍵名將會(huì)被重新編號(hào)!)
Array
(
[0] => data
)
—————————————————————————————————————————————
十三、array_multisort — 對(duì)多個(gè)數(shù)組或多維數(shù)組進(jìn)行排序
作者看了半天沒(méi)看懂,思維太膚淺了
—————————————————————————————————————————————
十四、在數(shù)組中進(jìn)行加與乘運(yùn)算的函數(shù)
(一)array_product — 計(jì)算數(shù)組中所有值的乘積
array_product ( array $array ) : number
array_product() 以整數(shù)或浮點(diǎn)數(shù)返回一個(gè)數(shù)組中所有值的乘積。
5.3.6 空數(shù)組現(xiàn)在會(huì)產(chǎn)生 1,而之前此函數(shù)處理空數(shù)組會(huì)產(chǎn)生 0。
Example #1 array_product() 例子
<?php
$a = array(2, 4, 6, 8);
echo "product(a) = " . array_product($a) . "\n";
echo "product(array()) = " . array_product(array()) . "\n";
?>
以上例程會(huì)輸出:
product(a) = 384
product(array()) = 1
(二)array_sum — 對(duì)數(shù)組中所有值求和
array_sum ( array $array ) : number
array_sum() 將數(shù)組中的所有值相加,并返回結(jié)果。
返回值說(shuō)明
所有值的和以整數(shù)或浮點(diǎn)數(shù)的結(jié)果返回,array 為空時(shí)則返回 0。
Example #1 array_sum() 例子
<?php
$a = array(2, 4, 6, 8);
echo "sum(a) = " . array_sum($a) . "\n";
$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);
echo "sum(b) = " . array_sum($b) . "\n";
?>
以上例程會(huì)輸出:
sum(a) = 20
sum(b) = 6.9
—————————————————————————————————————————————
十五、array_reverse — 返回單元順序相反的數(shù)組
array_reverse ( array $array [, bool $preserve_keys = FALSE ] ) : array
array_reverse() 接受數(shù)組 array 作為輸入并返回一個(gè)單元為相反順序的新數(shù)組。
參數(shù)說(shuō)明
array
輸入的數(shù)組。
preserve_keys
如果設(shè)置為 TRUE 會(huì)保留數(shù)字的鍵。 非數(shù)字的鍵則不受這個(gè)設(shè)置的影響,總是會(huì)被保留。
Example #1 array_reverse() 例子
<?php
$input = array("php", 4.0, array("green", "red"));
$reversed = array_reverse($input);
$preserved = array_reverse($input, true);
print_r($input);
print_r($reversed);
print_r($preserved);
?>
以上結(jié)果會(huì)輸出:
Array
(
[0] => php
[1] => 4
[2] => Array
(
[0] => green
[1] => red
)
)
Array
(
[0] => Array
(
[0] => green
[1] => red
)
[1] => 4
[2] => php
)
Array
(
[2] => Array
(
[0] => green
[1] => red
)
[1] => 4
[0] => php
)
—————————————————————————————————————————————
十六、array_unique — 移除數(shù)組中重復(fù)的值 (較常用)
array_unique ( array $array [, int $sort_flags = SORT_STRING ] ) : array
array_unique()接受 array 作為輸入并返回沒(méi)有重復(fù)值的新數(shù)組。
注意鍵名保留不變。array_unique()**先將值作為字符串排序,然后對(duì)每個(gè)值只保留第一個(gè)遇到的鍵名**,接著忽略所有后面的鍵名。這并不意味著在未排序的 array 中同一個(gè)值的第一個(gè)出現(xiàn)的鍵名會(huì)被保留。
Note: 當(dāng)且僅當(dāng) (string)elem2 時(shí)兩個(gè)單元被認(rèn)為相同。 例如,字符串表達(dá)一樣時(shí),會(huì)使用首個(gè)元素。
參數(shù)說(shuō)明
array
輸入的數(shù)組。
sort_flags
第二個(gè)可選參數(shù)sort_flags 可用于修改排序行為:
排序類型標(biāo)記:
SORT_REGULAR - 按照通常方法比較(不修改類型)
SORT_NUMERIC - 按照數(shù)字形式比較
SORT_STRING - 按照字符串形式比較(默認(rèn)值)
SORT_LOCALE_STRING - 根據(jù)當(dāng)前的本地化設(shè)置,按照字符串比較。
Example #1 array_unique() 例子
<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
?>
以上例程會(huì)輸出:
Array
(
[a] => green
[0] => red
[1] => blue
)
Example #2 array_unique() 和類型
<?php
$input = array(4, "4", "3", 4, 3, "3");
$result = array_unique($input);
var_dump($result);
?>
以上例程會(huì)輸出:
array(2) {
[0] => int(4)
[2] => string(1) "3"
}
—————————————————————————————————————————————
十七、array_unshift — 在數(shù)組開頭插入一個(gè)或多個(gè)單元
array_unshift ( array &$array [, mixed $... ] ) : int
array_unshift() 將傳入的單元插入到 array 數(shù)組的開頭。注意單元是作為整體被插入的,因此傳入單元將保持同樣的順序。所有的數(shù)值鍵名將修改為從零開始重新計(jì)數(shù),所有的文字鍵名保持不變。
注意: 返回值
返回 array 數(shù)組新的單元數(shù)目。
Notice:
7.3.0 現(xiàn)在可以只用一個(gè)參數(shù)來(lái)調(diào)用,之前至少需要兩個(gè)參數(shù)。
Example #1 array_unshift() 例子
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
print_r($queue);
?>
以上例程會(huì)輸出:
Array
(
[0] => apple
[1] => raspberry
[2] => orange
[3] => banana
)
—————————————————————————————————————————————
十八、array_values — 返回?cái)?shù)組中所有的值
array_values ( array $array ) : array
array_values() 返回 input 數(shù)組中所有的值并給其建立數(shù)字索引。
換句話說(shuō)返回的結(jié)果會(huì)返回含所有值的索引數(shù)組
Example #1 array_values() 例子
<?php
$array = array("size" => "XL", "color" => "gold");
print_r(array_values($array));
?>
以上例程會(huì)輸出:
Array
(
[0] => XL
[1] => gold
)
—————————————————————————————————————————————
更多的數(shù)組函數(shù)詳情可參考官網(wǎng)-->
本人覺(jué)得PHP在對(duì)數(shù)組的介紹還是挺詳細(xì)的(拙見(jiàn))
—————————————————————————————————————————————
十九、關(guān)于數(shù)組的排序問(wèn)題-->更多好看的數(shù)組排序
1) sort — 對(duì)數(shù)組排序
sort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
本函數(shù)對(duì)數(shù)組進(jìn)行排序。當(dāng)本函數(shù)結(jié)束時(shí)數(shù)組單元將被從最低到最高重新安排。
Note: 此函數(shù)為 array 中的元素賦與新的鍵名。這將刪除原有的鍵名,而不是僅僅將鍵名重新排序。
Warning 在對(duì)含有混合類型值的數(shù)組排序時(shí)要小心,因?yàn)?sort() 可能會(huì)產(chǎn)生不可預(yù)知的結(jié)果。
2) rsort — 對(duì)數(shù)組逆向排序
rsort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
數(shù)對(duì)數(shù)組進(jìn)行逆向排序(最高到最低)。
Note: 此函數(shù)為 array 中的元素賦與新的鍵名。這將刪除原有的鍵名,而不是僅僅將鍵名重新排序。
3) arsort — 對(duì)數(shù)組進(jìn)行逆向排序并保持索引關(guān)系
arsort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
本函數(shù)對(duì)數(shù)組進(jìn)行排序,數(shù)組的索引保持和單元的關(guān)聯(lián)。
主要用于對(duì)那些單元順序很重要的結(jié)合數(shù)組進(jìn)行排序。
鍵不變,根據(jù)值來(lái)排序
參數(shù)
array
要排序的數(shù)組。
sort_flags
可選的第二個(gè)參數(shù) sort_flags 可以用以下值改變排序的行為:
排序類型標(biāo)記:
SORT_REGULAR - 正常比較單元(不改變類型)(默認(rèn))
SORT_NUMERIC - 單元被作為數(shù)字來(lái)比較
SORT_STRING - 單元被作為字符串來(lái)比較
SORT_LOCALE_STRING - 根據(jù)當(dāng)前的區(qū)域(locale)設(shè)置來(lái)把單元當(dāng)作字符串比較,可以用 setlocale() 來(lái)改變。
SORT_NATURAL - 和 natsort() 類似對(duì)每個(gè)單元以“自然的順序”對(duì)字符串進(jìn)行排序。 PHP 5.4.0 中新增的。
SORT_FLAG_CASE - 能夠與 SORT_STRING 或 SORT_NATURAL 合并(OR 位運(yùn)算),不區(qū)分大小寫排序字符串。
4) asort — 對(duì)數(shù)組進(jìn)行排序并保持索引關(guān)系
asort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
本函數(shù)對(duì)數(shù)組進(jìn)行排序,數(shù)組的索引保持和單元的關(guān)聯(lián)。主要用于對(duì)那些單元順序很重要的結(jié)合數(shù)組進(jìn)行排序。
鍵不變,根據(jù)值來(lái)排序
5) krsort — 對(duì)數(shù)組按照鍵名逆向排序
krsort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
對(duì)數(shù)組按照鍵名逆向排序,保留鍵名到數(shù)據(jù)的關(guān)聯(lián)。主要用于結(jié)合數(shù)組。
6) ksort — 對(duì)數(shù)組按照鍵名排序
ksort ( array &$array [, int $sort_flags = SORT_REGULAR ] ) : bool
對(duì)數(shù)組按照鍵名排序,保留鍵名到數(shù)據(jù)的關(guān)聯(lián)。本函數(shù)主要用于關(guān)聯(lián)數(shù)組。
返回值統(tǒng)一說(shuō)明
成功時(shí)返回 TRUE, 或者在失敗時(shí)返回 FALSE。
—————————————————————————————————————————————
二十、in_array — 檢查數(shù)組中是否存在某個(gè)值(區(qū)分大小寫)
in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] ) : bool
大海撈針,在大海(haystack)中搜索針( needle),如果沒(méi)有設(shè)置 strict 則使用寬松的比較。
參數(shù)
needle
待搜索的值。
Note:
如果 needle 是字符串,則比較是區(qū)分大小寫的。
haystack
待搜索的數(shù)組。
strict
如果第三個(gè)參數(shù) strict 的值為 TRUE 則 in_array() 函數(shù)還會(huì)檢查 needle 的類型是否和 haystack 中的相同。
返回值
如果找到 needle 則返回 TRUE,否則返回 FALSE。
特殊例子 Example #3 in_array() 中用數(shù)組作為 needle
<?php
$a = array(array('p', 'h'), array('p', 'r'), 'o');
if (in_array(array('p', 'h'), $a)) {
echo "'ph' was found\n";
}
if (in_array(array('f', 'i'), $a)) {
echo "'fi' was found\n";
}
if (in_array('o', $a)) {
echo "'o' was found\n";
}
?>
以上例程會(huì)輸出:
'ph' was found
'o' was found
—————————————————————————————————————————————
二十一、list — 把數(shù)組中的值賦給一組變量(不太明白)
list ( mixed $var1 [, mixed $... ] ) : array
像 array() 一樣,這不是真正的函數(shù),而是語(yǔ)言結(jié)構(gòu)。 list() 可以在單次操作內(nèi)就為一組變量賦值。
Note:
在 PHP 7.1.0 之前的版本,list() 僅能用于數(shù)字索引的數(shù)組,并假定數(shù)字索引從 0 開始。
?
Warning PHP 5 里,list() 從最右邊的參數(shù)開始賦值; PHP 7 里,list() 從最左邊的參數(shù)開始賦值。
?如果你用單純的變量,不用擔(dān)心這一點(diǎn)。 但是如果你用了具有索引的數(shù)組,通常你期望得到的結(jié)果和在 list() 中寫的一樣是從左到右的,但在 PHP 5 里實(shí)際上不是, 它是以相反順序賦值的。 通常而言,不建議依賴于操作的順序,在未來(lái)可能會(huì)再次發(fā)生修改。
?Warning在 list() 執(zhí)行過(guò)程中修改數(shù)組(比如使用 list($a, $b) = $b)將會(huì)產(chǎn)生不可預(yù)知的結(jié)果。
—————————————————————————————————————————————
二十二、natsort — 用“自然排序”算法對(duì)數(shù)組排序
natsort ( array &$array ) : bool
?本函數(shù)實(shí)現(xiàn)了一個(gè)和人們通常對(duì)字母數(shù)字字符串進(jìn)行排序的方法一樣的排序算法并保持原有鍵/值的關(guān)聯(lián),這被稱為“自然排序”。本算法和通常的計(jì)算機(jī)字符串排序算法(用于 sort())的區(qū)別見(jiàn)下面示例。
Example #1 natsort() 基本用法的操作示例
<?php
$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png");
asort($array1);
echo "Standard sorting\n";
print_r($array1);
natsort($array2);
echo "\nNatural order sorting\n";
print_r($array2);
?>
以上例程會(huì)輸出:
Standard sorting
Array
(
[3] => img1.png
[1] => img10.png
[0] => img12.png
[2] => img2.png
)
Natural order sorting
Array
(
[3] => img1.png
[2] => img2.png
[1] => img10.png
[0] => img12.png
)
Example #2 natsort() examples demonstrating potential gotchas(潛在的陷阱)
<?php
第一個(gè)是關(guān)于正負(fù)數(shù)的陷阱
echo "Negative numbers\n";
$negative = array('-5','3','-2','0','-1000','9','1');
print_r($negative);
natsort($negative);
print_r($negative);
第二個(gè)是關(guān)于前置零的陷阱
echo "Zero padding\n";
$zeros = array('09', '8', '10', '009', '011', '0');
print_r($zeros);
natsort($zeros);
print_r($zeros);
?>
以上例程會(huì)輸出:
Negative numbers
Array
(
[0] => -5
[1] => 3
[2] => -2
[3] => 0
[4] => -1000
[5] => 9
[6] => 1
)
Array
(
[2] => -2
[0] => -5
[4] => -1000
[3] => 0
[6] => 1
[1] => 3
[5] => 9
)
Zero padding
Array
(
[0] => 09
[1] => 8
[2] => 10
[3] => 009
[4] => 011
[5] => 0
)
Array
(
[5] => 0
[1] => 8
[3] => 009
[0] => 09
[2] => 10
[4] => 011
)
—————————————————————————————————————————————
二十三、natcasesort — 用“自然排序”算法對(duì)數(shù)組進(jìn)行不區(qū)分大小寫字母的排序
natcasesort ( array &$array ) : bool
natcasesort() 是 natsort() 函數(shù)的不區(qū)分大小寫字母的版本。
本函數(shù)實(shí)現(xiàn)了一個(gè)和人們通常對(duì)字母數(shù)字字符串進(jìn)行排序的方法一樣的排序算法并保持原有鍵/值的關(guān)聯(lián),這被稱為“自然排序”。
排序方法還有:
- strnatcmp() - 使用自然排序算法比較字符串(區(qū)分大小寫)
-
strnatcasecmp() - 使用“自然順序”算法比較字符串(不區(qū)分大小寫)
—————————————————————————————————————————————
二十四、range — 根據(jù)范圍創(chuàng)建數(shù)組,包含指定的元素
range ( mixed $start , mixed $end [, number $step = 1 ] ) : array
建立一個(gè)包含指定范圍單元的數(shù)組。
參數(shù)說(shuō)明
start
序列的第一個(gè)值。
end
序列結(jié)束于 end 的值。
step
如果設(shè)置了步長(zhǎng) step,會(huì)被作為單元之間的步進(jìn)值。step 應(yīng)該為正值。不設(shè)置step 則默認(rèn)為 1。
Example #1 range() 例子
<?php
// array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
foreach (range(0, 12) as $number) {
echo $number;
}
// step 參數(shù)
// array(0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
foreach (range(0, 100, 10) as $number) {
echo $number;
}
// 字符序列的使用
// array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i');
foreach (range('a', 'i') as $letter) {
echo $letter;
}
// array('c', 'b', 'a');
foreach (range('c', 'a') as $letter) {
echo $letter;
}
?>
—————————————————————————————————————————————