2009-02-12 69 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一样更好地确定类型吗?