2017-09-15 64 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; 
});