zoukankan      html  css  js  c++  java
  • 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;
    }
    
    
  • 相关阅读:
    javascript闭包的理解
    关于打印
    CozyShark开发日志 3章节
    CozyShark开发日志 2章节
    CozyShark开发日志 1.5章节
    CozyShark开发日志 1章节
    CozyShark开发日志 0章节
    WPF:设置DataGrid中DataGridColumn列的普通样式和编辑样式
    Windows Phone开发学习笔记(1)---------自定义弹框
    一个简单的ASP.NEW MVC4网站(二)
  • 原文地址:https://www.cnblogs.com/datiangou/p/10202649.html
Copyright © 2011-2022 走看看