• PHP 数组辅助函数


    
    /**
     * 取多维数据中某字段的值
     * @param  array         $array  数据源数组
     * @param  string|array  $field  要获取的字段
     * @return array                 结果数组
     */
    function array_muliti_field($array, $field)
    {
        $resp = [];
        foreach($array as $k => $v) {
            if(is_array($field)) {
                foreach($field as $f) {
                    if(isset($v[$f]) && $v[$f] !== null) {
                        $resp[$f][$v[$f]] = $v[$f];
                    }
                }
            } elseif(isset($v[$field]) && $v[$field] !== null){
                $resp[] = $v[$field];
            }
        }
        return $resp;
    }/**
     * 将多维数组中的某一个元素作为键名,重新生成数组
     *
     * $array = [
     *     0 => ['id'=>10, 'title'=>'t10'],
     *     1 => ['id'=>11, 'title'=>'t11']
     * ];
     *
     * $res = array_set_key($array, 'id');
     *
     * 结果如下:
     * $res = [
     *     10 => ['id'=>10, 'title'=>'t10'],
     *     11 => ['id'=>11, 'title'=>'t11']
     * ];
     *
     * @param  array   $array    要处理的数组
     * @param  string  $key      作为 key 的字段名称
     * @param  string  $valuekey [description]
     * @return array             新生成的数组
     */
    function array_set_key($array, $key = '', $valuekey = '')
    {
        $res = [];
        while (list($k, $v) = each($array)) {
            if ($key == '') {
                $res[] = (($valuekey != '') ? $v[$valuekey] : $v);
            } else {
                $res[$v[$key]] = (($valuekey != '') ? $v[$valuekey] : $v);
            }
        }
        reset($array);
    
        return $res;
    }/**
     * 将多维数组中的某两个元素作为键名组成二维数组
     * $array = [
     *     0 => ['id'=>10,'title'=>'t10'],
     *     1 => ['id'=>11,'title'=>'t11'],
     *     2 => ['id'=>11,'title'=>'t12']
     * ];
     *
     * $res = array_set_keys($array, 'id', 'title');
     *
     * 结果如下:
     * $res = [
     *     10 => [
     *         't10' => ['id'=>10,'title'=>'t10']
     *     ],
     *
     *     11 => [
     *         't11' => ['id'=>11,'title'=>'t11'],
     *         't12' => ['id'=>11,'title'=>'t12']
     *     ]
     * ];
     * @param  [type] $array    [description]
     * @param  [type] $key1     [description]
     * @param  string $key2     [description]
     * @param  string $valuekey [description]
     * @return [type]           [description]
     */
    function array_set_keys($array, $key1, $key2 = '', $valuekey = '')
    {
        $res = [];
        while (list($k, $v) = each($array)) {
            $k1 = $v[$key1];
            $vl = ($valuekey != '') ? $v[$valuekey] : $v;
            if ($key2 == '') {
                $res[$k1][] = $vl;
            } else {
                $res[$k1][$v[$key2]] = $vl;
            }
        }
        reset($array);
    
        return $res;
    }
    
    
  • 相关阅读:
    T4模板使用记录,生成Model、Service、Repository
    sortablejs + vue的拖拽效果 列表个数不固定 刷新后保持拖拽后的效果
    vue获取input焦点,弹框后自动获取input焦点
    vue proxy 跨域代理
    vue 同步 $nextTick setTimeout 执行的顺序
    js手写日历插件
    js数组随机排序
    vue自定义插件
    elementui 自定义表头 renderHeader的写法 给增加el-tooltip的提示
    awit的用法,等待执行结果
  • 原文地址:https://www.cnblogs.com/datiangou/p/10202649.html
Copyright © 2020-2023  润新知