我是PHP的新手,我们的教师只是教我们C ++ OOP,我想在PHP上尝试。
我正在用我的班级创建对象。
class TwitterUser {
private $twittername;
public function TwitterUser($a)
{
$this->twittername = $a;
// echo $this->twittername;
}
}
$reader = new Spreadsheet_Excel_Reader($target_path);
$veriler = $reader->sheets[0]['cells'];
foreach($veriler as $veri)
{
if(!empty($veri[$sutun]) and $veri[$sutun]!="Twitter")
{
$kisiler[] = new TwitterUser(temizle($veri[$sutun]));
}
}
我想要的是,如果一个对象与$twittername
数据成员中的其他对象具有相同的字符串,则不要创建新对象。
答案 0 :(得分:0)
此任务通常使用某种模型完成 - >数据库方法(如Doctrine),在这种情况下,您将模型数据保存到数据库中。数据库表应设计为不允许多个记录使用相同的名称,并且可以将强制执行和错误处理的逻辑构建到模型类中。
您可以通过纯PHP实现相同的目标,但它需要以某种方式存储现有实例,因此在创建新实例时,可以检查现有实例的唯一性。
答案 1 :(得分:0)
如果用户名是test,您不想添加对象吗?基本上你不能退出构造函数。只需添加一个简单的标志,只需添加一次“test”用户。
使用您的代码示例:
$testuserexists = false;
foreach($veriler as $veri)
{
if(!empty($veri[$sutun]) and $veri[$sutun]!="Twitter" && $testuser == false)
{
$kisiler[] = new TwitterUser(temizle($veri[$sutun]));
if ($veri[$sutun] == "Test")
$testuserexists = true;
}
}
或者,如果您尝试不重复:
foreach($veriler as $veri)
{
if(!empty($veri[$sutun]) and $veri[$sutun]!="Twitter" && !isset($kisiler[$veri[$sutun]]))
{
$kisiler[$veri[$sutun]] = new TwitterUser(temizle($veri[$sutun]));
}
}
我不知道temizle函数应该做什么,但基本上你可以将用户名指定为关联数组键,并通过在条件中添加isset()来防止重复。