19.數組歸納:
20.排序:
排序改變了元素的內部順序並可以重新分配數字索引來反映新順序
(1) sort,rsort,usort按照值排序數組(改變了內部順序),然後從0開始重新分配索引.可以用foreach檢
測排序後的內部順序。
(2) asort,arsort,uasort按照值排序數組(改變了內部順序),但是索引值不變
(3) ksort,krsort,uksort按照索引值排序數組(改變了內部順序),值不變
<?php
$array = array ('a' => "lemon", 'c' => "orange", 'b' => "banana", 'd' => "apple");
//內部順序(可以用foreach輸出): 0: apple; 1: banana; 2: lemon; 3: orange;
sort($array);
$array = array ('a' => "lemon", 'c' => "orange", 'b' => "banana", 'd' => "apple");
//內部順序:d: apple; b: banana; a: lemon; c: orange;
asort ($array);
//內部順序:a: lemon; b: banana; c: orange; d: apple;
ksort ($array);
?>
21.數組翻轉:
$new_array = array_reverse( array [, bool preserve_keys])
(1) preserve_keys只對數字索引起作用,對字串鍵不起作用,字串鍵始終會被保留
(2) 函數翻轉數組中元素的內部順序,如果索引值是數字,那麼預設重新分配數字索引值,如果索引值
是字串,則不變,即預設preserve_key = false.
(3)$new_array = array_flip(array),翻轉了每個元素的鍵-值對的順序
<?php
$array = array ('a' => "lemon", 'c' => "orange", 'b' => "banana", 'd' => "apple");
$array1 = array_reverse($array); //d: apple; b: banana; c: orange; a: lemon;
$array1 = array_reverse($array,true); //d: apple; b: banana; c: orange; a: lemon;
$array = array ("lemon", "orange",'b'=> "banana","apple");
$array2 = array_reverse($array); //0: apple; b: banana; 1: orange; 2: lemon;
$array1 = array_reverse($array,true); //2: apple; b: banana; 1: orange; 0: lemon;
$array = array ('a' => "lemon", 'c' => "orange", 'b' => "banana", 'd' => "apple");
$array1 = array_flip($array); //lemon: a; orange: c; banana: b; apple: d;
$array = array ("lemon", "orange", "banana","apple");
$array1 = array_flip($array); //lemon: 0; orange: 1; banana: 2; apple: 3;
?>
22.洗牌: shuffle(array): 使得array亂序,所有索引值都被從0開始的數字索引值取代
<?php
$array = array ('a' => "lemon", 'b' => "orange", "banana","apple");
shuffle($array); //0: banana; 1: orange; 2: lemon; 3: apple;
?>
23.計算數組和:
<?php
$array = array('1','2','01',1,2,"1aa1");
echo array_sum($array); //8
?>
24.合并兩個數組:
http://hi.baidu.com/kkwtre/blog/item/69327001c766480a7aec2c5e.html
array_merge(array1,array2,array3...)
如果輸入的數組中有相同的字串鍵名,則之前數組的值會被後面的值覆蓋。然而,如果數組包含相
同的數字鍵名,後面的 值將不會覆蓋原來的值,而是附加到 後面。
<?php
$array1 = array ("color" => "red", 2, 4);
$array2 = array ("a", "b", "color" => "green", "shape" => "trapezoid", 4);
//color: green; 0: 2; 1: 4; 2: a; 3: b; shape: trapezoid; 4: 4;
$result1 = array_merge ($array1, $array2);
$result2 = $array1 + $array2; //color: red; 0: 2; 1: 4; shape: trapezoid; 2: 4;
?>
25.數組的差集: array_diff ( array array1, array array2 [, array ...])
(1) array_diff返回一個數組,該數組包括了所有在 array1中但是不在任何其它參數數組中的值。注意鍵名保留不變。
<?php
$array1 = array ("a" => "green", "red", "blue", "red");
$array2 = array ("b" => "green", "yellow", "red");
$result = array_diff ($array1, $array2); //1: blue;
?>
(2) 本函數使用'==='進行比較
26.從數組中過濾元素: array_filter ( array input [, callback function])
(1) array_filter() 依次將 input 數組中的每個值傳遞到 callback 函數。如果 callback
函數返回 TRUE,則 input 數組的當前值會被包含在返回的結果數組中。
(2) 數組的鍵名保留不變。
<?php
function pa($array){
foreach($array as $key=>$value){
echo "$key => $value; ";
}
echo "\n";
}
function odd($var) {
return ($var % 2 == 1);
}
$array1 = array ("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
pa(array_filter($array1, "odd")); //a => 1; c => 3; e => 5;
?>
27.移除數組中重複的值: $new_array = array_unique (array)
array_unique() 先將值作為字串排序,然後對每個值只保留第一個遇到的鍵名,忽
略所有後面的鍵名。
<?php
$input = array ("b" => "green", "red", "a" => "green", "blue", "red",1,1,2,3);
$result = array_unique ($input); //b => green; 0 => red; 1 => blue; 3 => 1; 5 => 2; 6 => 3;
$input = array (4,"4","3",4,3,"3");
$result = array_unique ($input);
var_dump($result); //[0]=>int(4), [2]=>string(1) "3"
?>
28.計算數組的交集:
array_intersect( array1, array2 [, array3 ...])
該函數返回一個數組,該數組包含了所有在 array1 中也同時出現在所有其它參數數組中的值。
注意鍵名取第一個。
<?php
$array1 = array ("a" => "green", "red", "blue",'red');
$array2 = array ("b" => "green", "yellow", "red");
$result = array_intersect ($array1, $array2);//a => green; 0 => red; 2 => red;
?>
array_reduce(array,function_name [, default]);
將函數function作用於數組的每一個元素來得到單個值
<?php
function rsum($v, $w) {
$v += $w;
return $v;
}
$a = array(1, 2, 3, 4, 5,6);
$b = array_reduce($a, "rsum",100);
echo $b; // 100 + 1 +2 + 3 + 4 + 5 +6 = 121
?>