我有一个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,每个对象的不同变量。
答案 0 :(得分: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 */
}
答案 1 :(得分:0)
不确定为什么你会希望它们是单个变量而不是仅存储一组用户,但我认为你正在寻找这个:
$i=0;
foreach ($this->user_id as $id){
$var = 'user'.$i;
$this->$var = new DatabaseObject_User($db);
$this->$var->loadForUser($db, $id);
$i++;
}
请记住,动态声明类属性通常是个坏主意。这些属性存在并且它们会自动公开并不明显。您可能只想考虑使用$users
类属性。