PHP中的數組(拆分與合併)

explode

使用一個字符串分割另一個字符串

$str = "11,22,33";
$arr = explode(",",$str);
print_r($arr);

Array
(
    [0] => 11
    [1] => 22
    [2] => 33
)

implode

將一個一維數組的值轉化爲字符串

$arr = [11,22,33];
$str = implode("#",$arr);
echo $str;

11#22#33

split

用正則表達式將字符串分割到數組中

preg_split()函數使用了Perl兼容正則表達式語法,通常是比split()更快的替代方案。如果不需要正則表達式的威力,則使用explode()更快,這樣就不會招致正則表達式引擎的浪費。

該函數在PHP7中已被廢棄

$str = "123dqaw76eqwv8902fwer12356";
$arr = split("[a-z]+", $str);
print_r($arr);

Array
(
    [0] => 123
    [1] => 76
    [2] => 8902
    [3] => 12356
)

preg_split

通過一個正則表達式分隔字符串

如果你不需要正則表達式功能,可以有更快(並且更簡單)的選擇比如 explode() 或 str_split()。

如果沒有成功匹配,將會返回一個數組,包含了單個元素,即輸入的字符串。

$str = "123dqaw76eqwv8902fwer12356";
$arr = preg_split("/[a-z]+/i", $str);
print_r($arr);

Array
(
    [0] => 123
    [1] => 76
    [2] => 8902
    [3] => 12356
)

str_split

將字符串轉換爲數組

$str = "hello world";
print_r(str_split($str));
print_r(str_split($str, 3));

Array
(
    [0] => h
    [1] => e
    [2] => l
    [3] => l
    [4] => o
    [5] =>  
    [6] => w
    [7] => o
    [8] => r
    [9] => l
    [10] => d
)
Array
(
    [0] => hel
    [1] => lo 
    [2] => wor
    [3] => ld
)

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));

Array
(
    [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_combine

創建一個數組,用一個數組的值作爲其鍵名,另一個數組的值作爲其值

$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);
print_r($c);

Array
(
    [green] => avocado
    [red] => apple
    [yellow] => banana
)

array_merge

合併一個或多個數組。一個數組中的值附加在前一個數組的後面,返回作爲結果的數組。

別忘了數字鍵名將會被重新編號!

$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);

Array
(
    [color] => red
    [0] => 2
    [1] => 4
)
Array
(
    [0] => a
    [1] => b
    [color] => green
    [shape] => trapezoid
    [2] => 4
)
Array
(
    [color] => green
    [0] => 2
    [1] => 4
    [2] => a
    [3] => b
    [shape] => trapezoid
    [4] => 4
)

如果你想完全保留原有數組並只想新的數組附加到後面,用 + 運算符。如果兩個被合併的數組含有相同的key,則保留第一個,忽略後邊的。

$array1 = array(0 => 'zero_a', 2 => 'two_a', 3 => 'three_a');
$array2 = array(1 => 'one_b', 3 => 'three_b', 4 => 'four_b');
$result = $array1 + $array2;
print_r($result);

Array
(
    [0] => zero_a
    [2] => two_a
    [3] => three_a
    [1] => one_b
    [4] => four_b
)

array_merge_recursive

遞歸地合併一個或多個數組

如果輸入的數組中有相同的字符串鍵名,則這些值會被合併到一個數組中去,這將遞歸下去,因此如果一個值本身是一個數組,本函數將按照相應的條目把它合併爲另一個數組。然而,如果數組具有相同的數組鍵名,後一個值將不會覆蓋原來的值,而是附加到後面。

$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($ar1);
print_r($ar2);
print_r($result);

Array
(
    [color] => Array
        (
            [favorite] => red
        )

    [0] => 5
)
Array
(
    [0] => 10
    [color] => Array
        (
            [favorite] => green
            [0] => blue
        )

)
Array
(
    [color] => Array
        (
            [favorite] => Array
                (
                    [0] => red
                    [1] => green
                )

            [0] => blue
        )

    [0] => 5
    [1] => 10
)

compact

建立一個數組,包括變量名和它們的值

對每個參數,compact() 在當前的符號表中查找該變量名並將它添加到輸出的數組中,變量名成爲鍵名而變量的內容成爲該鍵的值。

任何沒有變量名與之對應的字符串都被略過。

$city  = "San Francisco";
$state = "CA";
$event = "SIGGRAPH";
$location_vars = array("city", "state");
$result = compact("event", "nothing_here", $location_vars);
print_r($result);

Array
(
    [event] => SIGGRAPH
    [city] => San Francisco
    [state] => CA
)

extract

從數組中將變量導入到當前的符號表

檢查每個鍵名看是否可以作爲一個合法的變量名,同時也檢查和符號表中已有的變量名的衝突。

返回成功導入到符號表中的變量數目。

$var_array = [
    "color" => "blue",
    "size"  => "medium",
    "shape" => "sphere"
];
extract($var_array);
echo "$color, $size, $shape\n";

blue, medium, sphere

參考

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