假设我有一个用户定义类对象的数组。想知道如何在PHP中提取数组的元素。
// 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 ArrayList中提取对象时的做法,因此认为PHP方式可能类似。任何人都可以解释它。
答案 0 :(得分:8)
foreach ($alUser as $user) {
$obj = $user;
}
为什么需要对此进行类型转换?
答案 1 :(得分: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";
}
答案 2 :(得分:0)
例如,Eclipse PDT可以确定代码完成的对象类型。否则你会被卡住回溯,在那里创建数组以及放入哪些对象,然后查看类文件以查看可用的函数(或者temp创建一个新的theObject()以查看可用的方法/属性知道它是什么类型的对象。如果许多对象调用在其中创建那些数组和对象的函数,则其他时间可能不那么容易,因此必须回溯以查看这些数组是如何形成的。听说其他一些IDE可能能够像phpEd一样更好地确定类型吗?