我编写了一个PHP类来管理一些统计函数,但是有些函数需要最少的元素,即> 0。 所以我添加了一个try catch,我仍然得到同样的错误。
/**
* Calculates the minimum for a given set of values.
*
* @param array $values The input values
* @return float|int The minimum of values as an integer or float
*/
public static function min($values)
{
try {
min($values);
} catch (Exception $e) {
return 0;
}
}
我得到了:
ErrorException in Statistics.php line 41: min(): Array must contain at least one element
提前致谢。
答案 0 :(得分:1)
public static function min($values)
{
if (count($values) < 1) {
return 0;
}
return min($values);
}
如果您希望在数组为空时返回0
,那么简单的if
语句就足够了。就个人而言,我会在堆栈中更高的位置处理这个问题,而不是创建我自己的min
函数来处理它与内置函数的不同。
答案 1 :(得分:0)
您的ErrorException
被您的框架抛出。 (类似于Can I try/catch a warning?)
通常,min会触发Warning
根据min() docs:
min()返回考虑的参数值&#34;最低&#34;根据标准比较。如果不同类型的多个值评估为相等(例如0和&#39; abc&#39;),则将返回提供给函数的第一个值。
如果传递空数组,则会返回FALSE,并会发出 E_WARNING 错误。
在您的情况下,$values
是一个空数组。
为避免这种情况,您可以使用:
public static function min($values)
{
if (empty($values)){
return null; // better than 0. 0 is a valid minimum
}
return min($values);
}
答案 2 :(得分:0)
由于我正在使用Laravel,因为Alex注意到我错过了使用Exception来处理此异常。 之后,我能够发现错误。 谢谢你们所有人