数组-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;
}
}