2016-02-26 39 views
2

假設我有下面的PHP代碼:腓檢查

$a = new a(); 
$a->id = 1; 

然後我有型類型的對象數組$m(但他們真的可以是任何類型的) 。我要檢查如果m中的任何對象都有屬性ID等於1。在Java中,我會做一些事情,如:

myList 
.stream() 
.filter(x <- x.id == a.id) 
.count(); 

在PHP中我試圖

in_array($a, $m) 

但似乎並沒有做工作,因爲顯然即使另一個對象具有相同的ID,它仍然是一個不同的對象。

我明顯可以使用一個循環,但我真的想檢查一個數組n中的任何對象是否具有相同的對象,其ID爲m我寧願避免嵌套循環。

+0

尋找in_array($ A-> ID,$米)???? – devpro

+0

這可能幫助http://stackoverflow.com/questions/17231925/php-in-array-object-comparing – tofutim

回答

4

PHP也有一個陣列功能的過濾,這(原因很明顯)被稱爲array_filter()和你想要做什麼,用匿名函數。

function findAllWithId($objects, $id) { 
    return array_filter($objects, function($toCheck) use ($id) { 
     return $toCheck->id == $id; 
    }); 
} 
+1

如果您添加'$ objects'作爲函數的參數? –

+0

@ A.L是的,應該是。 – felipsmartins

+0

有兩種語法錯誤,在阿根廷失蹤對象,並使用($ ID) – fusion3k