PHP数组常用函数总结

1.数组的键/值操作函数

array_values($arr);  //获得数组的值
array_keys($arr);  //获得数组的键名
array_flip($arr);  //数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
in_array("apple",$arr);  //在数组中检索apple
array_search("apple",$arr);  //在数组中检索apple ,如果存在返回键名
array_key_exists("apple",$arr);  //检索给定的键名是否存在数组中
isset($arr[apple]):   //检索给定的键名是否存在数组中

2.统计数组元素的个数和唯一性

count();//计算数组中的单元数目,或对象中的属性个数
array_count_values();//统计数组中所有的值
array_unique();//移除数组中重复的值

3.使用回调函数处理数组的函数

------------------------------------------------------------------------------------
array_walk($arr,'function','words');  //使用用户函数对数组中的每个成员进行处理(第三个参数传递给回调函数function)
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");

function test_alter(&$item1, $key, $prefix)
{
    $item1 = "$prefix: $item1";
}

function test_print($item2, $key)
{
    echo "$key. $item2<br />\n";
}

echo "Before ...:\n";
array_walk($fruits, 'test_print');

array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:\n";

array_walk($fruits, 'test_print');
//以上例程会输出:
Before ...:
d. lemon
a. orange
b. banana
c. apple
... and after:
d. fruit: lemon
a. fruit: orange
b. fruit: banana
c. fruit: apple
------------------------------------------------------------------------------------
array_map("function",$arr1,$arr2);  //可以处理多个数组(当使用两个或更多数组时,他们的长度应该相同)
function cube($n)
{
    return($n * $n * $n);
}

$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
//以上例程会输出:
Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
)
------------------------------------------------------------------------------------
array_filter($arr,"function");  //使用回调函数过滤数组中的每个元素,如果回调函数为TRUE,数组的当前元素会被包含在返回的结果数组中,//数组的键名保留不变
function odd($var)
{
    // returns whether the input integer is odd
    return($var & 1);
}

function even($var)
{
    // returns whether the input integer is even
    return(!($var & 1));
}

$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);

echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));
//以上例程会输出:
Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)
------------------------------------------------------------------------------------
array_reduce($arr,"function","*");  //转化为单值函数(*为数组的第一个值)
function sum($carry, $item)
{
    $carry += $item;
    return $carry;
}

function product($carry, $item)
{
    $carry *= $item;
    return $carry;
}

$a = array(1, 2, 3, 4, 5);
$x = array();

var_dump(array_reduce($a, "sum")); // int(15)
var_dump(array_reduce($a, "product", 10)); // int(1200), because: 10*1*2*3*4*5
var_dump(array_reduce($x, "sum", "No data to reduce")); // string(17) "No data to reduce"
------------------------------------------------------------------------------------

4.数组的排序函数

//通过元素值对数组排序
sort($arr);  //由小到大的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
rsort($arr);  //由大到小的顺序排序(第二个参数为按什么方式排序)忽略键名的数组排序
usort($arr,"function");  //使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)忽略键名的数组排序
asort($arr);  //由小到大的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
arsort($arr);  //由大到小的顺序排序(第二个参数为按什么方式排序)保留键名的数组排序
uasort($arr,"function");  //使用用户自定义的比较函数对数组中的值进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)保留键名的数组排序

//通过键名对数组排序
ksort($arr);  //按照键名正序排序
krsort($arr);  //按照键名逆序排序
uksort($arr,"function");  //使用用户自定义的比较函数对数组中的键名进行排序(function中有两个参数,0表示相等,正数表示第一个大于第二个,负数表示第一个小于第二个)

//自然排序法排序
natsort($arr);  //自然排序(忽略键名)
natcasesort($arr);  //自然排序(忽略大小写,忽略键名)

5.拆分、合并、分解和接合数组

 array_slice()//从数组中取出一段
 array_splice()//删除
 array_combine()//合并
 array_merge();//合并
 array_intersect();//多个数组的交集
 array_intersect_assoc($arr1,$arr2);  //返回交集结果数组,键名也做比较
 array_diff();//返回多个数组的差集
 array_diff_assoc($arr1,$arr2,$arr3);  //返回差集结果数组,键名也做比较

6.数组与数据结构

//1.使用数组实现堆栈 //先进后出
array_push(); //将一个或多个单元压入数组的末尾(入栈)
array_pop();//弹出数组最后一个单元(出栈)
//2.使用数组实现队列 //先进先出
array_unshift();//在数组开头插入一个或多个单元
array_shift(); //将数组开头的单元移出数组
unset();//释放给定的变量

其他有用的数组处理函数

range(0,12);  //创建一个包含指定范围单元的数组
array_reverse($arr,TRUE);  //返回一个单元顺序与原数组相反的数组,如果第二个参数为TRUE保留原来的键名
array_rand($arr,2);  //从数组中随机取出一个或 多个元素
shuffle($arr);  //将数组的顺序打乱
array_sum($arr);  //对数组内部的所有元素做求和运算
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jaystrong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值