美文网首页PHP
array_reduce,array_column

array_reduce,array_column

作者: 一名鼻炎患者 | 来源:发表于2017-06-28 17:11 被阅读0次

    将两个二维数组中两相同key下的值合并

    $a = array( array ( 'id' => 1, 'catid' => 6));
    $b = array( array ( 'title' => '标题', 'content' => '内容'));
    //打印数据
    print_r(array( $a[0]+$b[0]) );
    print_r(array( array_merge($a[0], $b[0]) ));
    print_r(array_map('array_merge', $a, $b));
    
    都可以得到
    
    Array(
        [0] => Array(
                [id] => 1
                [catid] => 6
                [title] => 标题
                [content] => 内容
            )
    )
    

    array_column返回数组中某个单一列的值。简化代码可少用foreach

    array_reduce用回调函数迭代地将数组简化为单一的值:

    #array_column和array_reduce组合使用
    
    $serverList=array(3) {
      [1]=>
      array(1) {
        ["info"]=>
        string(58) "{"id":1,"ip":"192.168.1.1","zone":10,"dns":"www.test.com"}"
      }
      [2]=>
      array(1) {
        ["info"]=>
        string(58) "{"id":2,"ip":"192.168.1.2","zone":50,"dns":"www.test.com"}"
      }
      [3]=>
      array(1) {
        ["info"]=>
        string(58) "{"id":3,"ip":"192.168.1.3","zone":40,"dns":"www.test.com"}"
      }
    }
    //这种情况不使用foreach拿出每个info中的ip
    //create_function是匿名函数,可以把$v理解成返回的结果值,$w 理解为第二层数组 
    $arr = array_reduce($serverList, create_function('$v,$w', '$v[]=json_decode($w[info],true);return $v;'));
    $ipInfo=array_column($arr, 'ip');  
    var_dump($ipInfo);
    
    输出:
    array(3) {
      [0]=>
      string(11) "192.168.1.1"
      [1]=>
      string(11) "192.168.1.1"
      [2]=>
      string(11) "192.168.1.1"
    }
    

    array_search搜索数组中的值,返回对应的键

    $a=array("a"=>"red","b"=>"green","c"=>"blue");
    
    echo array_search("red",$a);
    

    相关文章

      网友评论

        本文标题:array_reduce,array_column

        本文链接:https://www.haomeiwen.com/subject/tfnucxtx.html