【问题标题】:php array filter with custom arguments带有自定义参数的php数组过滤器
【发布时间】:2017-09-15 15:03:13
【问题描述】:
     Array
(
    [13] => stdClass Object
        (
            [action] => click
            [timestamp] => 2017-05-09T18:00:41+00:00
            [url] => https://xxxxx.xxx/xxx/sdfsdfsd
            [title] => download e-book
        )
     [14] => stdClass Object
        (
            [action] => click
            [timestamp] => 2017-05-09T18:00:41+00:00
            [url] => https://xxxxx.xxx/xxx/sdfsdfsd
            [title] => download e-book
        )

    [17] => stdClass Object
        (
            [action] => open
            [timestamp] => 2017-05-09T18:00:21+00:00
            [url] => https://yyyyyyy.yyy
            [title] => download e-book
        )

)

我用这个函数过滤数组

function filter_callback($element) {
    if (isset($element->action) && $element->action == 'click') {
        return TRUE;
    }
    return FALSE;
}

function filter_callback1($element) {
    if (isset($element->url) && $element->url == 'https://yyyyy.yyy') {
        return TRUE;
    }
    return FALSE;
}

应该可以发送

'https://yyyyy.yyy' ,url, 点击, 动作 发挥作用

如何将这两个函数组合成一个函数,以便我可以向该函数发送操作和 URL 并获取正确的结果

【问题讨论】:

  • 在一个函数中使用两个比较有什么问题?那将是combining 他们对吗?
  • @YashKumarVerma 是的,我需要将这些功能组合成一个功能
  • 只是合并两个条件?这行得通吗?
  • @YashKumarVerma` if (isset($element->action) && $element->action == 'click' isset($element->url) && $element->url == '@ 987654323@)) { 返回真; } `

标签: php arrays


【解决方案1】:

如果您想将值传递到回调范围内,请使用匿名函数而不是已定义函数。

array_filter($your_array, function($element) use ($action, $url) {
    return isset($element->action, $element->url)
        && $element->action == $action
        && $element->url == $url;
});

【讨论】:

    猜你喜欢
    • 2013-07-20
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 2011-02-10
    • 1970-01-01
    • 2015-11-21
    相关资源
    最近更新 更多