2009-02-12 80 views
1

假設我有一個用戶定義類的對象數組。想知道如何在PHP中提取數組的元素。PHP Array提取對象

// class definition 
class User 
{ 
public $fname; 
public $lname; 
} 

// array of objects of the class defined above 
$objUser1 = new User(): 
$objUser2 = new User(): 
$objUser3 = new User(): 
$objUser4 = new User(): 

$alUser = array(); 
$alUser[] = $objUser1; 
$alUser[] = $objUser2; 
$alUser[] = $objUser3; 
$alUser[] = $objUser4; 


// trying to iterate and extract values using typcasting - this does not work, what is the alternative. 
foreach($alUser as $user) 
{ 
$obj = (User) $user; // gives error - unexpected $user; 
} 

這就是我如何使用java做的,同時提取了Java的ArrayList對象,因此認爲PHP的方法可能是相似的。任何人都可以解釋它。

回答

8
foreach ($alUser as $user) { 
    $obj = $user; 
} 

爲什麼你需要對此進行類型轉換?

3

PHP是一種動態類型語言。大多數情況下不需要投射。

無法投射給用戶:請參閱type juggling and casting上的PHP文檔。

本例將打印「$user is a object (User)」四次。

foreach($alUser as $user) { 
    echo '$user is a ' . get_type($user); 

    if(is_object($user)) { 
     echo ' (' . get_class($user) . ')'; 

    echo "\n"; 
} 
0

這將是很好的,例如Eclipse PDT來確定Code Completion的對象類型。否則就會陷入退步,創建數組以及將對象放入其中,然後查看類文件以查看可用的函數(或者,創建新的theObject()以查看可用的方法/屬性知道它是什麼類型的對象,其他時間可能不那麼容易,如果許多對象調用創建那些數組和對象的函數,那麼必須回溯以查看這些數組是如何製作的)。聽說其他一些IDE可能可以像phpEd一樣更好地確定類型嗎?