2012-10-02 63 views
2

我有類對象的數組:更多聲明PHP:陣列轉換

class Foo 
{ 
    public $A; 
    public $B; 
    public $C; 
} 

我需要Ç字段的新的數組。有沒有一種方法來轉換數組沒有顯式循環?恨C#之後。

// Explicit conversion: 
foreach ($arr as $item) 
{ 
    $Cs[] = $item->C; 
} 

問候,

+0

BTW:在C#中,你可以使用LINQ,這樣你就不必使用顯式循環.. – Philipp

回答

8
$Cs = array_map(function($item) { 
    return $item->C; 
}, $arr); 
+0

僅適用於PHP 5.3 + – JvdBerg

+0

在PHP <5.3,你可以使用命名函數array_map(「函數名」 ,$ arr); –

+1

或'create_function()',但在我看來,PHP5.3應該是現在的主流。 – KingCrunch

0

我相信你可以使用get_object_vars

$arr = get_object_vars(new Foo()); 
var_dump($arr); // should give Array(3) { "A"=>NULL, "B"=>NULL, "C"=>NULL } 
+0

是的,但是$ arr是Foo的數組,不是一個實例。另外,我將不得不從As和Bs過濾結果數組。 – noober

+0

的確,我誤解了這個問題。 – Prasanth