PHP对象为mysqli_fetch_array中的字符串赋值

时间:2016-03-14 19:57:42

标签: php

public static function instantiate($record){
     $object = new self;


    // $object->id = $record['UserID'];
    // $object->username = $record['Username'];
    // $object->password = $record['Password'];
    // $object->first_name = $record['Fname'];
    // $object->last_name = $record['Lname'];
    // $object->email = $record['Email'];

    foreach (array_unique($record) as $attribute => $value) {

        if($object->has_attribute($attribute)){

            $object->$attribute = $value;
            //var_dump($attribute);echo '<br>';
        }
    }
    return $object;
}

在这个函数中,我以两种方式从这个$对象中获取值。距评论部分还有很长的路要走,从未注释的部分(obv)。

漫长的道路给出了良好的结果:

  

object(User)#5(6){[“id”] =&gt; string(1)“1”[“username”] =&gt; string(6)“Parley”[“password”] =&gt; string(5)“12345”[“first_name”] =&gt; string(8)“Cristian”[“last_name”] =&gt; string(8)“Pirloaga”[“email”] =&gt; string(27)“cristian.pirloaga@gmail.com”}

简短的方法给出了一个糟糕的结果:

  

INT(0)   INT(1)   INT(2)   INT(3)   INT(4)   INT(5)   INT(6)   object(User)#5(13){[“id”] =&gt; NULL [“username”] =&gt; NULL [“password”] =&gt; NULL [“first_name”] =&gt; NULL [“last_name”] =&gt; NULL [“email”] =&gt; NULL [“0”] =&gt; string(1)“1”[“1”] =&gt; string(8)“Cristian”[“2”] =&gt; string(8)“Pirloaga”[“3”] =&gt; string(27)“cristian.pirloaga@gmail.com”[“4”] =&gt; string(6)“Parley”[“5”] =&gt; string(5)“12345”[“6”] =&gt; string(19)“2016-02-12 05:04:22”}

int(1).. int(6)是$属性值,后面是对象。

我试图将$属性值与长距离的那些字段进行匹配。我该怎么做? 这是一个实际的教程代码,它适用于他而不是我。

我有一个次要问题。 foreach循环总是将值加倍。在这种情况下,如果我删除了array_unique函数,它将在数据库中显示结果两次,它只有一行。为什么?

1 个答案:

答案 0 :(得分:0)

您可以使用mysqli_fetch_object代替mysqli_fetch_array来获得所需的结果。

但要回答你的问题:如果使用mysqli_fetch_array,默认情况下你会得到一个包含数字键和关联键的数组。例如:

array(
 1 => 'john',
 2 => 'doe',
 'firstname' => 'john',
 'lastname' => 'doe'
)

为避免这种情况,您可以将第三个参数int $result_type设置为MYSQL_ASSOC,如下所述: http://php.net/manual/de/function.mysql-fetch-array.php

使用MYSQL_ASSOC,您将获得不带数字键的数组,例如:

array(
 'firstname' => 'john',
 'lastname' => 'doe'
)

即使没有fore array_unique,你的功能也能正常工作。