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
?>