自己扩展的几个多维数组处理函数

本文介绍了一系列用于处理复杂数据运算与数组操作的函数,包括除法运算、数组重置、数组求反、数组加法和数组除法。每个函数都针对特定的数据类型和需求进行了优化。
/**
* 函数用途描述:除法运算
* @date: 2012-7-25
* @author: CoderQ
* @param : $numerator int/float 分子
* 		   $denominator int/float 分母
*          $exception 如果分母异常的输出值
*          $decimal 小数点数

* @return: int/float
*/
function divide($numerator, $denominator, $exception=null, $decimal=null)
{
	//非法类型
	$aInvalidType = array('object', 'array', 'resource', 'null');
	//类型判断
	if(in_array(gettype($numerator), $aInvalidType) || in_array(gettype($denominator), $aInvalidType))
	{
		return $exception;
	}
	//分母有效性检测
	if(!preg_match('/^\d+$/', $denominator) || $denominator == 0)
	{
		return $exception;
	}
	else 
	{
		return $decimal===null?$numerator / $denominator : number_format($numerator / $denominator, $decimal, '.', '');
	}
}

/**
* 函数用途描述:数组重置
* @date: 2012-7-25
* @author: CoderQ
* @param : $array array 需要重置的数组
* 		   $value 默认值

* @return: array
*/
function array_reset_all($array, $value=null)
{
	if(gettype($array) != 'array')
	{
		$array = $value;
	}
	else
	{
		foreach(array_keys($array) as $key)
		{
			array_reset_all (&$array[$key], $value);
		}
	}
	return $array;
}

/**
* 函数用途描述:数组求反
* @date: 2012-7-26
* @author: CoderQ
* @param : $array array 需要求反的数组
* 		   $exception mix 异常的默认值

* @return: array
*/
function array_invert_all($array, $exception=null)
{
	switch(gettype($array))
	{
		case 'array':
			foreach(array_keys($array) as $key)
			{
				array_invert_all (&$array[$key], $exception);
			}
			break;
		case 'integer':
		case 'float':
		case 'boolean':
			$array = - $array;
			break;
		default: 
			$array = $exception;
	}
	return $array;
}

/**
* 函数用途描述:数组加法
* @date: 2012-7-26
* @author: CoderQ
* @param : $minuend array 被减数
*		   $subtrahend array 减数
*		   $exception mix 异常时的默认值
		   
* @return: none
*/
function array_add_all($minuend, $subtrahend, $exception=0)
{
	switch(gettype($minuend))
	{
		case 'array':
			if(gettype($subtrahend) == 'array')
			{
				foreach(array_keys($minuend) as $key)
				{
					if(isset($subtrahend[$key]))
					{
						array_add_all(&$minuend[$key], $subtrahend[$key], $exception);
					}
				}
			}
			break;
		case 'NULL':
		case 'integer':
		case 'float':
		case 'boolean':
			if(gettype($subtrahend) == 'integer' || gettype($subtrahend) == 'float' || gettype($subtrahend) == 'boolean')
			{
				$minuend += $subtrahend;
			}
			break;
		default:
			$minuend = $exception;
	}
	return $minuend;
}

/**
* 函数用途描述:数组除法,用于环比同比等
* @特殊说明:该方法以分子数组作为标准
* @date: 2012-7-25
* @author: CoderQ
* @param : $numerator array 分子数组
* 		   $denominator array 分母数组
*   	   $exception 异常输出值
*   	   $decimal 小数位数

* @return: array
*/
function array_divide_all($numerator, $denominator, $exception=null, $decimal=null)
{
	switch(gettype($numerator))
	{
		case 'array':
			if(gettype($denominator) == 'array')
			{
				foreach(array_keys($numerator) as $key)
				{
					if(isset($denominator[$key]))
					{
						array_divide_all(&$numerator[$key], $denominator[$key], $exception, $decimal);
					}
					else
					{
						$numerator[$key] = array_reset_all($numerator[$key], $exception);
					}
				}
			}
			else
			{
				$numerator = array_reset_all($numerator, $exception);
			}
			break;
		case 'integer':
		case 'float':
		case 'boolean':
			$numerator = divide($numerator, $denominator, $exception, $decimal);
			break;
		default:
			$numerator = $exception;
	}
	return $numerator;
}

/**
* 函数用途描述:根据完整格式的数组,补齐格式不完整的数组
* @date: 2012-7-25
* @author: CoderQ
* @param : $incomplete array 不完整数组
* 		   $complete array 完整数组
* 		   $default mix 补齐数据时使用的默认值

* @return: array
*/
function array_fill_all($incomplete, $complete=null, $default=null)
{
	$reset = func_num_args() == 3 ? true : false;
	if(gettype($complete) != 'array')
	{
		return $reset ? $default : $incomplete;
	}
	foreach(array_keys($complete) as $key)
	{
		if(isset($incomplete[$key]))
		{
			if(gettype($incomplete[$key]) == 'array')
			{
				if($reset)
				{
					array_fill_all (&$incomplete[$key], $complete[$key], $default);
				}
				else
				{
					array_fill_all (&$incomplete[$key], $complete[$key]);
				}
			}
		}
		else
		{
			$incomplete[$key] = $reset ? array_reset_all($complete[$key], $default) : $complete[$key];
		}
	}
	return $incomplete;
}
内容概要:本文围绕新一代传感器产品在汽车电子电气架构中的关键作用展开分析,重点探讨了智能汽车向高阶智能化演进背景下,传统传感器无法满足感知需求的问题。文章系统阐述了自动驾驶、智能座舱、电动化与网联化三大趋势对传感器技术提出的更高要求,并深入剖析了激光雷达、4D毫米波雷达和3D-ToF摄像头三类核心新型传感器的技术原理、性能优势与现存短板。激光雷达凭借高精度三维点云成为高阶智驾的“眼睛”,4D毫米波雷达通过增加高度维度提升环境感知能力,3D-ToF摄像头则在智能座舱中实现人体姿态识别与交互功能。文章还指出传感器正从单一数据采集向智能决策升级,强调车规级可靠性、多模态融合与成本控制是未来发展方向。; 适合人群:从事汽车电子、智能驾驶、传感器研发等相关领域的工程师和技术管理人员,具备一定专业背景的研发人员;; 使用场景及目标:①理解新一代传感器在智能汽车系统中的定位与技术差异;②掌握激光雷达、4D毫米波雷达、3D-ToF摄像头的核心参数、应用场景及选型依据;③为智能驾驶感知层设计、多传感器融合方案提供理论支持与技术参考; 阅读建议:建议结合实际项目需求对比各类传感器性能指标,关注其在复杂工况下的鲁棒性表现,并重视传感器与整车系统的集成适配问题,同时跟踪芯片化、固态化等技术演进趋势。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值