關(guān)于PHP的數(shù)組問(wèn)題之函數(shù)

一、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) elem1 === (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(array1[0],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) key1 === (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) elem1 === (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_key_exists()、empty()、isset()的簡(jiǎn)單區(qū)別

—————————————————————————————————————————————

十、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) elem1 === (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;
}
?>

—————————————————————————————————————————————

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、數(shù)組定義 array() 1、索引數(shù)組 在一個(gè)變量中,存儲(chǔ)一個(gè)或多個(gè)值。數(shù)組中的每一個(gè)元素都有一個(gè)訪問(wèn)ID,根...
    竹與豆閱讀 579評(píng)論 0 0
  • # 數(shù)組部分 # 1.## array_chunk($arr, $size [, $preserve_key = ...
    clothTiger閱讀 1,316評(píng)論 0 1
  • PHP數(shù)組函數(shù),摘錄于PHP手冊(cè) 1、array_change_key_case (PHP 4 >= 4.2.0,...
    kotlin360閱讀 812評(píng)論 2 1
  • 數(shù)組的概述 PHP 中的數(shù)組實(shí)際上是一個(gè)有序圖。圖是一種把 values 映射到 keys 的類型。此類型在很多方...
    dptms閱讀 1,738評(píng)論 0 4
  • 1.strlen()與mb_strlen()的作用分別是什么? strlen()和mb_strlen()都是作用于...
    落魄PHP女程序員閱讀 407評(píng)論 0 2

友情鏈接更多精彩內(nèi)容