PHP匿名函数和use子句用法实例

本文介绍了一个PHP中的匿名函数示例,展示了如何通过use子句在匿名函数中引用外部变量,并给出了具体的实现代码。
<?php


function test()
{
  $param2 = 'everyone';
  $func = function ($p1,$p2,$p3) use (&$param2) {
    // use子句 让匿名函数使用其父作用域的变量
    print $p1 . ' ' . $p2 . ' ' . $p3 . ' ' . $param2;
    $param2 = 'everyone';
  };
  return $func;
}
 $anonymous_func = test();
 $anonymous_func('卢','笃','均');
在 MySQL 中,FILTER 函数 HAVING 子句有着不同的作用使用场景,以下是它们的区别: ### 功能用途 - **FILTER 函数**:通常结合聚合函数使用,用于在聚合时对数据进行过滤,可在同一个查询里对不同的聚合函数应用不同的过滤条件。例如,统计不同性别用户数量时,可以使用 FILTER 函数分别统计男性女性用户数量: ```sql SELECT COUNT(*) AS total_users, COUNT(*) FILTER (WHERE gender = 'male') AS male_users, COUNT(*) FILTER (WHERE gender = 'female') AS female_users FROM users; ``` - **HAVING 子句**:一般 GROUP BY 一起使用,用于对分组后的结果进行过滤。它可以筛选出满足特定条件的分组。例如,查询订单总金额大于 1000 的客户: ```sql SELECT customer_id, SUM(amount) AS total_amount FROM orders GROUP BY customer_id HAVING SUM(amount) > 1000; ``` ### 执行时机 - **FILTER 函数**:在聚合阶段对数据进行过滤,只让满足条件的数据参与聚合计算。 - **HAVING 子句**:在分组聚合操作完成之后执行,对分组后的结果进行筛选。 ### 语法位置 - **FILTER 函数**:作为聚合函数的一部分,写在聚合函数内部。 - **HAVING 子句**:跟在 GROUP BY 子句之后,用于指定分组结果的过滤条件。 ### 适用范围 - **FILTER 函数**:只能用于聚合函数中,对聚合的数据进行部分过滤。 - **HAVING 子句**:虽然通常 GROUP BY 搭配,但也可以不搭配 GROUP BY 使用,不过这种情况非常少见,且只有在特定场景下才有意义 [^1]。 ### 性能表现 - **FILTER 函数**:在聚合时直接过滤数据,减少了聚合的数据量,对于某些场景可能会提高性能。 - **HAVING 子句**:在分组聚合完成后进行过滤,可能会产生较大的中间结果集,在处理大数据量时可能性能较差。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值