2017-09-15 71 views
0
 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 
     ) 

) 

我已经使用这个功能来过滤阵列PHP滤镜阵列

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',网址,点击,行动 发挥作用

如何将这两个函数合并为一个f以便我可以将动作和URL发送到此函数并获取正确结果

+1

在一个函数中使用两个比较有什么问题?那会“结合”他们的权利? –

+0

@YashKumarVerma是的,我需要将这些功能合并成一个功能 – Revamp

+0

检查:https://stackoverflow.com/questions/5482989/php-array-filter-with-arguments –

回答

2

如果要将值传递到回调的范围中,请使用匿名函数而不是定义的函数。

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