PHP之array

来源:互联网 发布:常用组态软件 编辑:程序博客网 时间:2024/05/22 14:38

数组函数详细介绍

数组排序

<?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的序列会重新调整sort0--11--22--43--54--6rsort0--61--52--43--24--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;}//保留原来的键值对应关系asort1--10--22--43--54--6arsort4--63--52--40--21--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;}//比较键的大小,用于关联数组ksort2--23--34--45--56--6krsort6--65--54--43--32--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;}//去除重复元素,键不会重新排序3unique0--11--24--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则被移除。数组的键名保留不变。

<?phpfunction 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,该参数将被当成是数组中的第一个值来处理,或者如果数组为空的话就作为最终返回值。

<?phpfunction 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) { }?>
0 0
原创粉丝点击