zoukankan      html  css  js  c++  java
  • array_map

    array_map

    (PHP 4 >= 4.0.6, PHP 5)

    array_map — 将回调函数作用到给定数组的单元上

    说明

    array array_map ( callable $callback , array $arr1 [, array $... ] )

    array_map() 返回一个数组,该数组包含了 arr1 中的所有单元经过 callback 作用过之后的单元。 callback 接受的参数数目应该和传递给 array_map() 函数的数组数目一致。

    参数

     

    callback

    Callback function to run for each element in each array.

    arr1

    An array to run through the callback function.

    array

    Variable list of array arguments to run through the callback function.

    返回值

    Returns an array containing all the elements of arr1 after applying the callback function to each one.

    范例

     

    Example #1 array_map() 例子

     1 <?php
     2 function  cube ( $n )
     3 {
     4     return( $n  *  $n  *  $n );
     5 }
     6 
     7 $a  = array( 1 ,  2 ,  3 ,  4 ,  5 );
     8 $b  =  array_map ( "cube" ,  $a );
     9 print_r ( $b );
    10 ?>

    这使得 $b 成为:

    Array
    (
        [0] => 1
        [1] => 8
        [2] => 27
        [3] => 64
        [4] => 125
    )
    

     

    Example #2 array_map() using a lambda function (as of PHP 5.3.0)

    1 <?php
    2 $func  = function( $value ) {
    3     return  $value  *  2 ;
    4 };
    5 
    6 print_r ( array_map ( $func ,  range ( 1 ,  5 )));
    7 ?>
    Array
    (
        [0] => 2
        [1] => 4
        [2] => 6
        [3] => 8
        [4] => 10
    )
    

     

    Example #3 array_map() - 使用更多的数组

     1 <?php
     2 function  show_Spanish ( $n ,  $m )
     3 {
     4     return( "The number  $n  is called  $m  in Spanish" );
     5 }
     6 
     7 function  map_Spanish ( $n ,  $m )
     8 {
     9     return(array( $n  =>  $m ));
    10 }
    11 
    12 $a  = array( 1 ,  2 ,  3 ,  4 ,  5 );
    13 $b  = array( "uno" ,  "dos" ,  "tres" ,  "cuatro" ,  "cinco" );
    14 
    15 $c  =  array_map ( "show_Spanish" ,  $a ,  $b );
    16 print_r ( $c );
    17 
    18 $d  =  array_map ( "map_Spanish" ,  $a  ,  $b );
    19 print_r ( $d );
    20 ?>

    以上例程会输出:

    // printout of $c
    Array
    (
        [0] => The number 1 is called uno in Spanish
        [1] => The number 2 is called dos in Spanish
        [2] => The number 3 is called tres in Spanish
        [3] => The number 4 is called cuatro in Spanish
        [4] => The number 5 is called cinco in Spanish
    )// printout of $d
    Array
    (
        [0] => Array
            (
                [1] => uno
            )    [1] => Array
            (
                [2] => dos
            )    [2] => Array
            (
                [3] => tres
            )    [3] => Array
            (
                [4] => cuatro
            )    [4] => Array
            (
                [5] => cinco
            ))
    

    通常使用了两个或更多数组时,它们的长度应该相同,因为回调函数是平行作用于相应的单元上的。如果数组的长度不同,则最短的一个将被用空的单元扩充。

    本函数一个有趣的用法是构造一个数组的数组,这可以很容易的通过用 NULL 作为回调函数名来实现。

     

    Example #4 建立一个数组的数组

    1 <?php
    2 $a  = array( 1 ,  2 ,  3 ,  4 ,  5 );
    3 $b  = array( "one" ,  "two" ,  "three" ,  "four" ,  "five" );
    4 $c  = array( "uno" ,  "dos" ,  "tres" ,  "cuatro" ,  "cinco" );
    5 
    6 $d  =  array_map ( null ,  $a ,  $b ,  $c );
    7 print_r ( $d );
    8 ?>

    以上例程会输出:

    Array
    (
        [0] => Array
            (
                [0] => 1
                [1] => one
                [2] => uno
            )    [1] => Array
            (
                [0] => 2
                [1] => two
                [2] => dos
            )    [2] => Array
            (
                [0] => 3
                [1] => three
                [2] => tres
            )    [3] => Array
            (
                [0] => 4
                [1] => four
                [2] => cuatro
            )    [4] => Array
            (
                [0] => 5
                [1] => five
                [2] => cinco
            ))
    

    If the array argument contains string keys then the returned array will contain string keys if and only if exactly one array is passed. If more than one argument is passed then the returned array always has integer keys.

     

    Example #5 array_map() - with string keys

     1 <?php
     2 $arr  = array( "stringkey"  =>  "value" );
     3 function  cb1 ( $a ) {
     4     return array ( $a );
     5 }
     6 function  cb2 ( $a ,  $b ) {
     7     return array ( $a ,  $b );
     8 }
     9 var_dump ( array_map ( "cb1" ,  $arr ));
    10 var_dump ( array_map ( "cb2" ,  $arr ,  $arr ));
    11 var_dump ( array_map ( null ,   $arr ));
    12 var_dump ( array_map ( null ,  $arr ,  $arr ));
    13 ?>

    以上例程会输出:

    array(1) {
      ["stringkey"]=>
      array(1) {
        [0]=>
        string(5) "value"
      }
    }
    array(1) {
      [0]=>
      array(2) {
        [0]=>
        string(5) "value"
        [1]=>
        string(5) "value"
      }
    }
    array(1) {
      ["stringkey"]=>
      string(5) "value"
    }
    array(1) {
      [0]=>
      array(2) {
        [0]=>
        string(5) "value"
        [1]=>
        string(5) "value"
      }
    }
    

    参见

     

  • 相关阅读:
    ASP.NET MVC构建RESTful服务时返回Unauthorized(401)状态
    [原]jQuery Tab插件,用于在Tab中显示iframe,附源码和详细说明
    [转]线程间操作无效: 从不是创建控件“ *** ”的线程访问它。
    ASP.NET MVC中RESTful原教旨主义者的两个实现细节
    [原]C#绘制等值线二 等值线追踪
    Nginx+iptables 防DDOS,恶意访问,采集器
    Nginx+iptables屏蔽访问Web页面过于频繁的IP(防DDOS,恶意访问,采集器)
    解决CC攻击,Linux VPS,登录SSH,登录进VPS控制面板
    Inno Setup打包程序默认选择创建桌面图标
    苹果笔记本连接黑莓设置
  • 原文地址:https://www.cnblogs.com/haidong/p/4372164.html
Copyright © 2011-2022 走看看