我有一个user_id数组:
$user_id = Array ();
我想为每个对象创建不同的变量名:
//Something like $this->user_0, $this->user_1, $this->user_2, ...
$i=0;
foreach ($this->user_id as $id){
$var = 'this->user'.$i;
$$var = new DatabaseObject_User($db);
$$var->loadForUser($db, $id);
$i++;
}
我想要类似于$this->user_0、$this->user_1、$this->user_2的东西,每个对象都有不同的变量。
不要这样做。在尝试迭代和测试这些属性时,您将遇到无尽的麻烦。
只需使用阵列,例如
class Whatever {
private $user_id = []; // PHP 5.4 syntax, use array() if not applicable
private $users = [];
public function loadUsers() {
foreach ($this->user_id as $id){
$user = new DatabaseObject_User($db); // dunno where $db comes from
$user->loadForUser($db, $id);
$this->users[] = $user;
}
}
然后,您可以通过数组索引访问每个用户,例如
$this->users[n]; // where n is some integer; 0 <= n < count($this->users)
或迭代数组
foreach ($this->users as $user) {
/* @var $user DatabaseObject_User */
}
不知道为什么你希望它们是单独的变量,而不仅仅是存储一个用户数组,但我认为你正在寻找这个:
$i=0;
foreach ($this->user_id as $id){
$var = 'user'.$i;
$this->$var = new DatabaseObject_User($db);
$this->$var->loadForUser($db, $id);
$i++;
}
请记住,动态声明类属性通常是个坏主意。这些财产是否存在并自动公开并不明显。您可能需要考虑只使用$users
类属性。