【问题标题】:PHP: how to condition max(array_filter) & min(array_filter) if emptyPHP:如果为空,如何设置 max(array_filter) 和 min(array_filter)
【发布时间】:2017-01-25 15:20:00
【问题描述】:

我使用 compact 创建了一个数组:

$rank_month = compact('jan','feb','mar'); 像这样,数据将使用查询来获取,因此数据有时会是并且数据将是数字。 然后我使用max(array_filter) and min(array_filter) 来获取数组中的最高和最低值,但是当查询为空时,我得到了

错误:max():数组必须包含至少一个元素

错误:Min():数组必须包含至少一个元素

是否可以这样设置:

     if(empty(max(array_filter('$rank_month')))){
        $high = ""; }
    else{
    $high = max(array_filter('$rank_month'
}

或者他们有什么方法可以解决这个错误?即使数据为空

谢谢。

【问题讨论】:

  • 只是错误的意思:$rank_month 是一个空数组

标签: php arrays if-statement


【解决方案1】:

array_filter 真正想要一个 数组 时,你正在传递一个 string'$rank_month' 是一个 11 个字符的字符串,它不是一个数组。

您要确保将 数组 传递给 array_filter(以及 minmax)。

您还想在调用min/max之前检查过滤数组的长度。

$filtered_month = array_filter($rank_month);
if(!empty($filtered_month)){
    $high = max($filtered_month);
}
else{
    $high = '';
}

【讨论】:

    【解决方案2】:

    简单地说就是错误:$rank_month 是一个空数组 使用sizeofcount

    if (sizeof($rank_month) > 1) {
        $high = max($rank_month);
    } else {
       ...
    }
    

    或者

    if (count($rank_month) > 1) {
         $high = max($rank_month);
     else {
      ...
    }
    

    【讨论】:

    • 为什么要在max 中引用参数?另外,您在 if 条件下的比较是错误的。
    • maxm 中删除引号是max($var); 而不是max('$var')
    • @Twisted1919 抱歉正忙着回答其他问题...让你...更新了
    【解决方案3】:

    您需要检查Array 是否为空,而不是max 值是否为空。 您也不需要传入array_filter,数组本身应该可以工作。

    if(empty($rank_month)){
        $high = ""; 
    } else {
        $high = max($rank_month);
    }
    

    【讨论】:

    • 我已经尝试过了,但它生成Fatal error: Can't use function return value in write contex
    • 试试我更新的代码,修复了 Rocket Hazmat 发现的字符串而不是数组。
    猜你喜欢
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-14
    相关资源
    最近更新 更多