您的位置:首页 > 编程语言 > PHP开发

PHP之array

2016-07-09 13:54 741 查看
数组函数详细介绍

数组排序

<?php

$arr = array(
2,1,4,5,6
);
sort($arr);
listarr($arr,'sort');

rsort($arr);
listarr($arr,'rsort');

function listarr($arr,$name){
echo $name;
echo PHP_EOL;
foreach($arr as $key => $val){
echo $key,'--',$val;
echo PHP_EOL;
}
echo PHP_EOL;
}
//key的序列会重新调整
sort
0--1
1--2
2--4
3--5
4--6

rsort
0--6
1--5
2--4
3--2
4--1


<?php

$arr = array(
2,1,4,5,6
);
asort($arr);
listarr($arr,'asort');

arsort($arr);
listarr($arr,'arsort');

function listarr($arr,$name){
echo $name;
echo PHP_EOL;
foreach($arr as $key => $val){
echo $key,'--',$val;
echo PHP_EOL;
}
echo PHP_EOL;
}
//保留原来的键值对应关系
asort
1--1
0--2
2--4
3--5
4--6

arsort
4--6
3--5
2--4
0--2
1--1


<?php

$arr = array(
2=>'2',4=>'4',3=>'3',6=>'6',5=>'5'
);
ksort($arr);
listarr($arr,'ksort');

krsort($arr);
listarr($arr,'krsort');

function listarr($arr,$name){
echo $name;
echo PHP_EOL;
foreach($arr as $key => $val){
echo $key,'--',$val;
echo PHP_EOL;
}
echo PHP_EOL;
}
//比较键的大小,用于关联数组
ksort
2--2
3--3
4--4
5--5
6--6

krsort
6--6
5--5
4--4
3--3
2--2


数组元素插入取出

<?php
$fruit = array("orange", "banana");
array_unshift($fruit, "apple", "raspberry");
//array("apple", "raspberry","orange", "banana")
array_shift($fruit);
//array("raspberry","orange", "banana")
array_push($fruit,"apple");
//array("raspberry","orange", "banana","apple")
array_pop($fruit);
//array("raspberry","orange", "banana")


array_pad(array(),$length,value)

用值将数组填补到指定长度

<?php
$input = array(12, 10, 9);

$result = array_pad($input, 5, 0);
// result is array(12, 10, 9, 0, 0)

$result = array_pad($input, -7, -1);
// result is array(-1, -1, -1, -1, 12, 10, 9)

$result = array_pad($input, 2, "noop");
// not padded


array_sum

<?php

$arr = array(1,2,3,4,5);
echo array_sum($arr);


array_diff()

计算数组的差集

//返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。
<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);

print_r($result);
##
Array
(
[1] => blue
)


array_diff_key()

使用键名比较计算数组的差集

<?php
$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

var_dump(array_diff_key($array1, $array2));
##
array(2) {
["red"]=>
int(2)
["purple"]=>
int(4)
}


array_diff_assoc()

带索引检查计算数组的差集,即键名键值都一致就排除

<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);
print_r($result);
##
Array
(
[b] => brown
[c] => blue
[0] => red
)


array_intersect()

计算数组的交集

<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);
##
Array
(
[a] => green
[0] => red
)


array_intersect_key()

使用键名比较计算数组的交集

<?php
$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);

var_dump(array_intersect_key($array1, $array2));
##
array(2) {
["blue"]=>
int(1)
["green"]=>
int(3)
}


array_unique

返回没有重复值的新数组,键名保持不变,同值保留第一个

<?php

$arr = array(1,2,2,2,5);
echo count( array_unique($arr) );

listarr(array_unique($arr),'unique');
function listarr($arr,$name){
echo $name;
echo PHP_EOL;
foreach($arr as $key => $val){
echo $key,'--',$val;
echo PHP_EOL;
}
echo PHP_EOL;
}
//去除重复元素,键不会重新排序
3unique
0--1
1--2
4--5


array_flip($arr)

将数组键值调转,同名保留最后一个

<?php
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
print_r(array_flip(array_flip($input)));

##可以达到跟array_unique()同样的效果
Array
(
[b] => green
[2] => red
[1] => blue
)


array_rand

<?php
//返回一个随机值
$arr = array(1,2,2,2,5);
echo $arr[array_rand($arr)];


extract

<?php

$arr = array(
'name'=>'ligbee'
);
extract($arr);
echo $name;
echo PHP_EOL;

$new = compact(name);
echo($new['name']);

//extract将 数组 转换为 变量-值
ligbee
//compac将 变量-值 转换为 数组
ligbee


array_walk

<?php

$arr = array(1,2,3);
function add($val){
echo ++$val;
}
array_walk($arr,'add');
//将数组中的元素传递给定义的函数
234


array_map

<?php

$arr = array(1,2,3);
function add($val){
return ++$val;
}
$new = array_map('add',$arr);
print_r($new);
//
Array
(
[0] => 2
[1] => 3
[2] => 4
)


array_filter($arr,callback)

数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则数组的当前值会被包含在返回的结果数组中,FALSE则被移除。数组的键名保留不变。

<?php
function odd($var)
{
return($var & 1);
}

function even($var)
{
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
)
//当callback为空时,数组值为空,null,0时返回FALSE
<?php

$entry = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => ''
);

print_r(array_filter($entry));
?>
##
Array
(
[0] => foo
[2] => -1
)


array_reduce($arr,callback[,initial])

将回调函数迭代地作用到数组中的每一个单元中,从而将数组简化为单一的值。如果指定了可选参数 initial,该参数将被当成是数组中的第一个值来处理,或者如果数组为空的话就作为最终返回值。

<?php
function rsum($v, $w)
{
$v += $w;
return $v;
}

function rmul($v, $w)
{
$v *= $w;
return $v;
}

$a = array(1, 2, 3, 4, 5);
$x = array();
$b = array_reduce($a, "rsum"); //15
$c = array_reduce($a, "rmul", 10); //1200
$d = array_reduce($x, "rsum", "No data to reduce"); //No data to reduce
?>


array_combine(array(),array())

创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值

<?php
$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_chunk

将一维数组分组成二维

<?php

$arr = array('l','i','g','b','e','e');
print_r(array_chunk($arr,3));

##
Array
(
[0] => Array
(
[0] => l
[1] => i
[2] => g
)

[1] => Array
(
[0] => b
[1] => e
[2] => e
)

)


array_column($arr,key)

返回数组中指定的一列

<?php
$records = array(
array(
'id' => 2135,
'first_name' => 'John',
'last_name' => 'Doe',
),
array(
'id' => 3245,
'first_name' => 'Sally',
'last_name' => 'Smith',
),
array(
'id' => 5342,
'first_name' => 'Jane',
'last_name' => 'Jones',
),
array(
'id' => 5623,
'first_name' => 'Peter',
'last_name' => 'Doe',
)
);

$first_names = array_column($records, 'first_name');
print_r($first_names);
?>
##
Array
(
[0] => John
[1] => Sally
[2] => Jane
[3] => Peter
)


array_serach($str, array())

在数组中搜索给定的值,如果成功则返回相应的键名

<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array);   // $key = 1;
?>


current(array()) 指针

返回数组中的当前单元

<?php
$transport = array('foot', 'bike', 'car', 'plane');
$mode = current($transport); // $mode = 'foot';
$mode = next($transport);    // $mode = 'bike';
$mode = current($transport); // $mode = 'bike';
$mode = prev($transport);    // $mode = 'foot';
$mode = end($transport);     // $mode = 'plane';
$mode = current($transport); // $mode = 'plane';

$arr = array();
var_dump(current($arr)); // bool(false)

$arr = array(array());
var_dump(current($arr)); // array(0) { }
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php 函数