0

我真的是 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数据成员中的其他对象具有相同的字符串,则不要创建新对象。

4

2 回答 2

0

如果用户名是 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() 来防止重复。

于 2013-07-18T17:03:05.883 回答
0

此任务通常使用某种模型 -> 数据库方法(例如 Doctrine)来完成,在这种情况下,您将模型数据保存到数据库中。数据库表应设计为不允许多个记录使用相同的名称,并且可以将强制执行的逻辑和错误处理内置到模型类中。

您可以通过纯 PHP 实现相同的目的,但它需要以某种方式存储现有实例,因此在创建新实例时,可以检查现有实例的唯一性。

于 2013-07-18T16:58:29.947 回答