php数组函数常见的那些? (array_merge、in_array的作用)
PHP中以array_开头的数组函数有哪些,并说出使用方法(至少6个)
一、数组遍历函数
// list(); //不是真正的函数,而是PHP的语言结构,用于给一组变量赋值,仅能用于索引数组
// each(); //返回数组当前元素的键值对,并将指针移动到下一个元素位置
// while(); //可配合list或each使用:while(list($key, $value) = each($arr)){each $key, $value; }
$arr = array('a','b','c');
while (list($key, $value) = each($arr)) {
echo $key, $value;
echo '
';
}
?>
二、数组内部指针控制
// current(); //读取指针位置的内容
// key(); //读取当前指针指向内容的索引值
// next(); //将数组中的内部指针指向下一单元
// prev(); //将数组内部指针倒回一位
// end(); //将数组内部指针指向最后一个元素
// reset(); //将目前指针指向第一个索引位置
$people = array("Bill", "Steve", "Mark", "David");
echo current($people) . "
"; // 当前元素是 Bill
echo next($people) . "
"; // Bill 的下一个元素是 Steve
echo current($people) . "
"; // 现在当前元素是 Steve
echo prev($people) . "
"; // Steve 的上一个元素是 Bill
echo end($people) . "
"; // 最后一个元素是 David
echo prev($people) . "
"; // David 之前的元素是 Mark
echo current($people) . "
"; // 目前的当前元素是 Mark
echo reset($people) . "
"; // 把内部指针移动到数组的首个元素,即 Bill
echo next($people) . "
"; // Bill 的下一个元素是 Steve
var_dump (each($people)); // 返回当前元素的键名和键值(目前是 Steve),并向前移动内部指针
?>
三、数组键值操作函数
$arr = array("Name"=>"Bill","Age"=>"60","Country"=>"USA",'Weight'=>"60");
var_dump($arr);
// array_values() 获得数组的值
var_dump(array_values($arr));
// array_keys() 获得数组的键名
var_dump(array_keys($arr));
// array_flip() 数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
var_dump(array_flip($arr));
// array_search() 函数在数组中搜索某个键值,并返回对应的键名。
echo array_search('Bill',$arr); // 返回值为Name
// array_reverse()将数组中的元素翻转(前后顺序)
var_dump(array_reverse($arr));
// in_array() 函数搜索数组中是否存在指定的值。
// 注释:如果 search 参数是字符串且 type 参数被设置为 TRUE,则搜索区分大小写。
if (in_array("bill", $arr,true)){
echo "匹配已找到";
}else{
echo "匹配未找到";
}
// array_key_exists() 函数检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false。
// 键区分大小写
if (array_key_exists("Name",$arr)){
echo "键存在!";
}else{
echo "键不存在!";
}
// array_count_values() 统计数组中所有值出现的次数
var_dump(array_count_values($arr));
// array_unique() 删除数组中重复的值
var_dump(array_unique($arr));
?>
四、数组回调函数
// array_filter() 使用回调函数过滤数组中的元素,如果回调返回true则当前的元素被包含到返回数组中
function test_odd($var){
return($var & 1); // &是位运算符 3 & 1返回1,即true,所以下面的回调函数返回Array ( [3] => 3 )
}
$a1 = array("a","b",2,3,4);
print_r(array_filter($a1,"test_odd"));
// array_walk() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。
function myfunction($value,$key){
echo "The key $key has the value $value
";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction");
// array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
function myfunction2($v){
return ($v*$v);
}
$a = array(1,2,3,4,5);
print_r(array_map("myfunction2",$a));
?>
五、数组的分段和填充
// array_slice($arr, 0, 3); //将数组中的一段取出,此函数忽略键名(数组的分段)
$a = array("red","green","blue","yellow","brown");
print_r(array_slice($a,2,2));
// array_splice() 函数从数组中移除选定的元素,并用新元素取代它。该函数也将返回包含被移除元素的数组。
// 提示:如果函数没有移除任何元素(length=0),则将从 start 参数的位置插入被替换数组(参见例子 2)。
// 注释:不保留被替换数组中的键名。
$a1 = array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2 = array("a"=>"purple","b"=>"orange");
print_r(array_splice($a1,0,2,$a2));
print_r($a1);
// array_chunk($arr, 3, TRUE); //将一个数组分割成多个,TRUE为保留原数组的键名(分割多个数组)
$cars = array("Volvo","BMW","Toyota","Honda","Mercedes","Opel");
print_r(array_chunk($cars,4,true));
?>
六、数组与栈,列队
$arr = array('a','b','c');
// array_push($arr, "apple", "pear") 将一个或多个元素压入数组栈的末尾(入栈),返回新数组的长度
echo array_push($arr, "apple", "pear");
var_dump($arr);
// array_pop($arr) 将数组栈的最后一个元素弹出(出栈)
echo array_pop($arr);
var_dump($arr);
// array_shift($arr); //数组中第一个元素移出并返回(长度减1,其他元素向前移动一位,数字键名改为从零计数,文字键名不变)
echo array_shift($arr);
var_dump($arr);
// array_unshift($arr,"aa",array(1,2)); //在数组的开头插入一个或多个元素,该函数返回新数组的长度
echo array_unshift($arr,"aa",array(1,2));
var_dump($arr);
?>
七、数组的排序
$arr = array('a','b','c');
// sort($arr); //由小到大,忽略键名
sort($arr);
var_dump($arr);
// rsort($arr); //由大到小,忽略键名
rsort($arr);
var_dump($arr);
// asort($arr); //由小到大,保留键名
asort($arr);
var_dump($arr);
// arsort($arr); //由大到小,保留键名
arsort($arr);
var_dump($arr);
// ksort($arr); //按照键名正序排序
ksort($arr);
var_dump($arr);
// krsort($arr); //按照键名逆序排序
krsort($arr);
var_dump($arr);
?>
八、数组的计算
$arr1 = array(1,2,3,4,5);
$arr2 = array(4,7,8,9);
// array_sum($arr); //对数组内部的所有元素做求和运算(数组元素的求和)
echo array_sum($arr1);
// array_merge($arr1, $arr2); //合并两个或多个(相同字符串键名,后面覆盖前面,相同的数字键名,后面的附加到后面)
var_dump(array_merge($arr1, $arr2));
// array_diff($arr1, $arr2); //返回差集结果数组
var_dump(array_diff($arr1, $arr2));
// array_diff_assoc($arr1, $arr2, $arr3); //返回差集结果数组,键名也做比较
var_dump(array_diff_assoc($arr1, $arr2));
// array_intersect($arr1, $arr2); //返回交集结果数组
var_dump(array_intersect($arr1, $arr2));
// array_intersect_assoc($arr1, $arr2); //返回交集结果数组,键名也做比较
var_dump(array_intersect_assoc($arr1, $arr2));
?>
九、其他的数组函数<?php
$arr = array('a'=>1,'b'=>2,'c'=>3,'d'=>2);
// array_unique($arr); //移除数组中重复的值,新的数组中会保留原始的键名
$result = array_unique($arr);
var_dump($result);
// shuffle($arr); // 将数组的顺序打乱
shuffle($arr);
var_dump($arr);
?>