请教各位php组合生成一个特殊数组的问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

请教各位php组合生成一个特殊数组的问题

落地花开啦 2016-06-13 16:07:35 1265

两个原数组screenshot
需要生成的数组screenshot
如何生成的?

PHP
分享到
取消 提交回答
全部回答(1)
  • 落地花开啦
    2019-07-17 19:36:19

    就是大数组里面的第一个小数组永远是最长的 ... 如果在这个数组里有 false 值则补全其他为空白 ...
    写了段示例代码如下

    <?php
    /* your array puts here ... primary key must be the first entry ... */
    $arr = [
        'id'    =>  [ '1', false, '3', '4' ],
        'name'  =>  [ 'zhang', 'li', 'du' ]
    ];
    
    /* get all key names ... */
    $keys = array_keys( $arr );
    
    /* use a different way to solve this ... */
    var_export( array_reduce( $arr, 
        function( & $result, $current ) use ( & $keys ) {
    
        /* get current key name ... */
        $key = array_shift( $keys );
    
        /* first run ..? */
        if ( ! isset( $result ) )
    
            /* initialize a new array with primary key... */
            $result = array_map( function( $value ) use ( $key ) {
    
                /* just packing value as an array ... */
                return [ $key => $value ];
    
            /* value based on $current ... known as first entry of $arr ... */
            }, $current );
    
        /* when the array is built ... add new keys into it ... */
        else foreach ( $result as $num => & $value )
    
            /* leave blank when primary key is false or entry is empty ... */
            $value[$key] = ( false !== current( $value ) ) ?
                array_shift( $current ) ?: '' : '';
    
        /* send the new array back ... */
        return $result;
    
    } ) );

    原理就是根据原数组里面的第一个小数组建立主键 ... 然后根据主键把所有元素拼合在一起 ...

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题