数组相关处理函数

一、数组键值相关处理函数

1. array_values()  //返回输入的所有值,并建立索引

 1 $temp=array("os"=>"linux","webserver"=>"Apache", "db"=>"MySql", "laguage"=>"php");
 2 $arr=array_values($temp);
 3 echo '<pre>';
 4 print_r($arr);
 5 echo '</pre>';
 6 
 7 //result
 8 Array
 9 (
10     [0] => linux
11     [1] => Apache
12     [2] => MySql
13     [3] => php
14 )

2. array_keys()  //返回数组中所有的键名

  array_keys(inputarray,[mixed value])  //若指定要搜索的值,则返回该值的键名,否则返回全部

 1 $temp=array("os"=>"linux","webserver"=>"Apache", "db"=>"MySql", "laguage"=>"php");
 2 $arr=array_keys($temp);
 3 echo '<pre>';
 4 print_r($arr);
 5 echo '</pre>';
 6 
 7 $arr=array_keys($temp, "MySql");
 8 echo '<pre>';
 9 print_r($arr);
10 echo '</pre>';
11 
12 //value
13 Array
14 (
15     [0] => os
16     [1] => webserver
17     [2] => db
18     [3] => laguage
19 )
20 Array
21 (
22     [0] => db
23 )

3. bool in_array ( mixed needle, array haystack [, bool strict])

//检查数组中是否存在某个值

1 $temp=array("os"=>"linux","webserver"=>"Apache", "db"=>"MySql", "laguage"=>"php");
2 if( in_array("Apache", $temp) ){
3     echo 'find Apache!'.'<br />';
4 }
5 
6 //result
7 find Apache!

4.  bool array_key_exists ( mixed key, array search)

//检查给定的键名或者索引是否存在于数组中

$temp=array("os"=>"linux","webserver"=>"Apache", "db"=>"MySql", "language"=>"php");
if( array_key_exists("language", $temp) ){
    echo 'language is in array!'.'<br />';
}

//result

language is in array!

5. array array_flip ( array trans)

//交换数组中的键和值

 1 $temp=array("os"=>"linux","webserver"=>"Apache", "db"=>"MySql", "language"=>"php");
 2 
 3 echo '<br />';
 4 print_r($temp);
 5 echo '<br />';
 6 
 7 $temp=array_flip($temp);
 8 echo '<br />';
 9 print_r($temp);
10 echo '<br />';
11 
12 //result
13 Array ( [os] => linux [webserver] => Apache [db] => MySql [language] => php ) 
14 
15 Array ( [linux] => os [Apache] => webserver [MySql] => db [php] => language ) 

6. array array_reverse ( array array [, bool preserve_keys])

//返回一个单元顺序相反的数组

 1 $temp=array("os"=>"linux","webserver"=>"Apache", "db"=>"MySql", "language"=>"php");
 2 
 3 $temp=array_reverse($temp);
 4 echo '<pre>';
 5 print_r($temp);
 6 echo '</pre>';
 7 
 8 $temp=array_reverse($temp);
 9 echo '<pre>';
10 print_r($temp);
11 echo '</pre>';
12 
13 //result
14 Array
15 (
16     [language] => php
17     [db] => MySql
18     [webserver] => Apache
19     [os] => linux
20 )
21 Array
22 (
23     [os] => linux
24     [webserver] => Apache
25     [db] => MySql
26     [language] => php
27 )

二、统计数组元素的个数

1. array array_count_values ( array input)

//统计数组中所有值出现的次数,返回的依然是数组

 1 $temp=array("os"=>"linux","webserver"=>"Apache", "db"=>"MySql", "language"=>"php");
 2 
 3 $count=array_count_values($temp);
 4 
 5 print_r($count);
 6 
 7 
 8 //result
 9 
10 Array ( [linux] => 1 [Apache] => 1 [MySql] => 1 [php] => 1 )

2. array array_unique ( array array)
//移除数组中重复的值

1 $temp=array("abc"=>"MySql", "os"=>"linux","webserver"=>"Apache", "db"=>"MySql", "language"=>"php");
2 
3 $count=array_unique($temp);
4 
5 print_r($count);
6 
7 //result
8 
9 Array ( [abc] => MySql [os] => linux [webserver] => Apache [language] => php )

三、使用回调函数处理数组的函数

1. array array_filter ( array input [, callback function])

//回调函数过滤数组中的元素

array_filter() 依次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 input 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。 

 1 function ji($var){
 2     return ($var % 2 == 1);
 3 }
 4 function ou($var){
 5     return ($var % 2 == 0);
 6 }
 7 
 8 $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
 9 $array2 = array(6, 7, 8, 9, 10, 11, 12);
10 
11 echo "jishu: ";
12 print_r(array_filter($array1, "ji"));
13 echo "oushu: ";
14 print_r(array_filter($array2, "ou"));
15 
16 //result
17 jishu: Array ( [a] => 1 [c] => 3 [e] => 5 ) oushu: Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 )

2.  bool array_walk ( array array, callback function [, mixed userdata])
//对数组中的每个成员应用用户函数,其中回调函数的第一个值为值,第二个为键,第三个为array_walk的第三个参数

 1 function guoyuan($value,$key){
 2     echo $key.'--is--'.$value.'<br />';    
 3 }
 4 function guoyuan1($value,$key,$class){
 5     echo $class.':'.$key."-is-".$value.'<br />';    
 6 }
 7 
 8 $fruits=array("a"=>"apple", "b"=>"banana", "p"=>"pear", "o"=>"orange");
 9 
10 array_walk($fruits, "guoyuan");
11 array_walk($fruits, "guoyuan1","fruits");
12 
13 //result
14 a--is--apple
15 b--is--banana
16 p--is--pear
17 o--is--orange
18 fruits:a-is-apple
19 fruits:b-is-banana
20 fruits:p-is-pear
21 fruits:o-is-orange 

3. array array_map ( mixed callback, array arr1 [, array ...])

//将回调函数作用到给定数组的单元上,返回的也是一个数组

 

function cube($value){
    return $value*$value*$value;
}

$num=array(1,2,3,4,5,6,7,8,9);

$cube_num=array_map("cube",$num);
echo '<pre>';
print_r($cube_num);
echo '</pre>';

//result
Array
(
    [0] => 1
    [1] => 8
    [2] => 27
    [3] => 64
    [4] => 125
    [5] => 216
    [6] => 343
    [7] => 512
    [8] => 729
)

可以传入多个数组,回调函数中参数的个数应该跟传入数组的个数一致

function test($first_n, $sec_n){
    return $first_n.'--is--'.$sec_n;
}

$num=array(1,2,3,4,5,6,7,8,9);
$num_en=array("one", "two", "three", "four", "five", "six", "seven", "eight", "nine");

$result=array_map("test", $num, $num_en);
echo '<pre>';
print_r($result);
echo '</pre>';

//result
Array
(
    [0] => 1--is--one
    [1] => 2--is--two
    [2] => 3--is--three
    [3] => 4--is--four
    [4] => 5--is--five
    [5] => 6--is--six
    [6] => 7--is--seven
    [7] => 8--is--eight
    [8] => 9--is--nine
)

可以通过NULL构造一个数组的数组不用回调函数

$num=array(1,2,3,4,5,6,7,8,9);
$num_en=array("one", "two", "three", "four", "five", "six", "seven", "eight", "nine");
$num_2=array(11,22,33,44,55,66,77,88,99);

$result=array_map(NULL, $num, $num_en, $num_2);
echo '<pre>';
print_r($result);
echo '</pre>';

//result
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => one
            [2] => 11
        )

    [1] => Array
        (
            [0] => 2
            [1] => two
            [2] => 22
        )

    [2] => Array
        (
            [0] => 3
            [1] => three
            [2] => 33
        )

    [3] => Array
        (
            [0] => 4
            [1] => four
            [2] => 44
        )

    [4] => Array
        (
            [0] => 5
            [1] => five
            [2] => 55
        )

    [5] => Array
        (
            [0] => 6
            [1] => six
            [2] => 66
        )

    [6] => Array
        (
            [0] => 7
            [1] => seven
            [2] => 77
        )

    [7] => Array
        (
            [0] => 8
            [1] => eight
            [2] => 88
        )

    [8] => Array
        (
            [0] => 9
            [1] => nine
            [2] => 99
        )

)

<完>

 

转载于:https://www.cnblogs.com/bukliu/p/php.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值