0
点赞
收藏
分享

微信扫一扫

数组 - PHP 工具类

数组-PHP工具类

调用

 //将数组转化成以指定KEY为键
        $usersList = ArrayHelper::changeKeyToColumn($usersList,"id");

基类 ArrayHelper.php


<?php
/**
 * Created by PhpStorm.
 * User: peeke
 * Date: 2020/5/19
 * Time: 17:37
 */
namespace App\common\Helpers\tools;


class ArrayHelper
{

    /**
     * 去除重复数据
     *
     * @param $arr 传入二维数组
     * @param $key 传入需要判断重复的键名
     * @return mixed 返回去重后的数组
     */
    public static function assoc_unique($arr, $key)
    {
        if (empty($arr)) return [];
        $tmp_arr = array();
        foreach ($arr as $k => $v) {
            if (in_array($v[$key], $tmp_arr)) {//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
                unset($arr[$k]);
            } else {
                $tmp_arr[] = $v[$key];
            }
        }

        return $arr;
    }

    /**
     * 数组 转 对象
     *
     * @param array $arr 数组
     * @return object
     */
    public static function array_to_object($arr)
    {
        if (gettype($arr) != 'array') {
            return;
        }
        foreach ($arr as $k => $v) {
            if (gettype($v) == 'array' || getType($v) == 'object') {
                $arr[$k] = (object)array_to_object($v);
            }
        }
        return (object)$arr;
    }

    /**
     * 对象 转 数组
     *
     * @param object $obj 对象
     * @return array
     */
    public static function object_to_array($obj)
    {
        $obj = (array)$obj;
        foreach ($obj as $k => $v) {
            if (gettype($v) == 'resource') {
                return;
            }
            if (gettype($v) == 'object' || gettype($v) == 'array') {
                $obj[$k] = (array)($v);
            }
        }

        return $obj;
    }

    /**
     * 转换arrayKey
     *
     * @param array  $obj
     * @param string $columnName
     * @return array
     */
    public static function changeKeyToColumn(array $obj, string $columnName)
    {
        $newObj = [];
        foreach ($obj as $one) {
            if (isset($one[$columnName])) {
                $newObj[$one[$columnName]] = $one;
            } else {
                break;
            }
        }
        return $newObj;
    }

    /**
     * 转换ARRAY KEY 相同的KEY,包留值,将原有的值变成数组存入
     *
     * @param array  $obj
     * @param string $columnName
     * @return void
     */
    public static function arrayColumn(array $obj, string $columnName)
    {
        $newObj = [];
        foreach ($obj as $one) {
            if (isset($one[$columnName])) {
                if (!isset($newObj[$one[$columnName]])) {
                    $newObj[$one[$columnName]][] = $one;
                } else if (!in_array($one, $newObj[$one[$columnName]])) {
                    $newObj[$one[$columnName]][] = $one;
                }
            } else {
                break;
            }
        }
        return $newObj;
    }

    /**
     * 清空数组数据
     *
     * @param array $obj
     * @return array
     */
    public static function cleanValArray(array $obj)
    {
        foreach ($obj as $key => $value) {
            if (is_array($value)) {
                $obj[$key] = self::cleanValArray($obj);
            } else {
                $obj[$key] = "";
            }
        }
        return $obj;
    }

    /**
     * 增加全部条件
     *
     * @param array $config
     * @return array
     */
    public static function makeIncludeAll(array $config)
    {
        $configArr = array_merge(['0' => '全部'], $config);

        return $configArr;
    }

    /**
     * 判断当前Array当中是否有空值,如有空值,返回空值对应的键
     *
     * @param array $arr
     * @return array
     */
    public static function isHaveEmptyParams(array $arr)
    {
        $result = [];
        foreach ($arr as $key => $value) {
            if (is_array($value)) {
                $result[$key] = self::isHaveEmptyParams($value);
            } else if (empty($value) && !in_array($key, $result)) {
                $result[] = $key;
            }
        }

        return $result;
    }

    /**
     * Notes: 过滤区域数组中的
     * Interface filterArea
     *
     * @param array $areaIds
     * @return array
     */
    public static function filterArea(array $areaIds)
    {
        // 只有-1值的数组
        if (count($areaIds) == 1 && array_search('-1', $areaIds) === 0) {
            unset($areaIds[0]);
        }
        // 有可能存在key为0
        if (count($areaIds) > 1 && ($key = array_search('-1', $areaIds)) !== false) {
            unset($areaIds[$key]);
        }

        return $areaIds;
    }

    /**
     * Notes: 过滤区域json字符串中的
     * Interface filterAreaByJson
     *
     * @param string $areaIdString
     * @return string
     */
    public static function filterAreaByJson(string $areaIdString)
    {
        $areaIds = json_decode($areaIdString, true);

        if (empty($areaIds)) {
            return $areaIdString;
        }
        // 只有-1值的数组
        if (count($areaIds) == 1 && array_search('-1', $areaIds) === 0) {
            unset($areaIds[0]);
        }
        // 有可能存在key为0
        if (count($areaIds) > 1 && ($key = array_search('-1', $areaIds)) !== false) {
            unset($areaIds[$key]);
        }
        $areaIdString = json_encode($areaIds, JSON_UNESCAPED_UNICODE);

        return $areaIdString;
    }

    /**
     * 多维数组去重
     *
     * @param $arr
     * @return array
     */
    public static function arrayUniqueMulitArray($arr)
    {

        $mapArr = array_map('serialize', $arr);
        //利用serialize()方法将数组转换为以字符串形式的一维数组
        $mapArr = array_unique($mapArr);
        //去掉重复值
        $newArr = array_map('unserialize', $mapArr);
        //然后将刚组建的一维数组转回为php值

        return $newArr;
    }

}


举报

相关推荐

0 条评论