2012-09-02 139 views
-5

我一直在关注一个非常有趣的教程,它真正测试了我编写Php的能力。我一直认为我是男人,但我却变得更糟。话虽如此,在教程中解释了实例化一个对象的要求,所以我输入了这段代码,不要误解我的错误,一切正常,没有任何问题。最重要的是我不明白底下是如何工作的,这就是为什么我希望有人向我解释更多。 当我使用MySQL_fetch_array从数据库中提取记录时,我的问题是什么以及如何将数据呈现给接收变量。例如娄面向对象的PHP和阵列

private static function instantiate($record){ 
$object = new self; 
    foreach($record as $attribute => $value){ 
    if($object->has_attribute($attribute)){ 
     $object->$attribute =$value; 
    } 
    } 
    return $object; 
} 

,如果我有一个表中3个字段如姓名,年龄,地址和值,让说Jhone,23,亚利桑那州将是什么店的属性,这将是在密钥存储和索引在哪里以及foreeach如何从数据库中提取这些数据,如上例所示,并将其分配给另一个数组。请我不需要任何代码我的代码工作正常,我需要的是一个非常原始和清晰的解释。并且事先真的很感谢你的支持。

+4

作为一个程序员大约知道接受你懂得一点。 –

+1

你虽然_you是man_,但不知何故,你还在使用'mysql_ *'?你从来没有听说过或阅读过ArrayAccess接口......? –

+0

另外,请不要使用'mysql_ *'函数来编写新的代码。他们不再维护,社区已经开始[弃用程序](http://goo.gl/KJveJ)。请参阅* [红盒子](http://goo.gl/GPmFd)*?相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定哪些,[这篇文章](http://goo.gl/3gqF9)会帮助你。如果你选择PDO,[这里是很好的教程](http://goo.gl/vFWnC)。 –

回答

0

真正有用的是打印出你的方法中的东西(例如print_r)。例如,尝试这与你的方法:

private static function instantiate($record){ 
print_r($record); 
 $object = new self; 
print_r($object); 
   foreach($record as $attribute => $value){ 
    echo "attribute: $attribute, value:$value <br />"; 
     if($object->has_attribute($attribute)){ 
      $object->$attribute =$value; 
     } 
   } 
    print_r($object); 
    die(); 
   return $object; 
 } 

这样的话,你可以清楚地看到正在发生的事情与物体,等的foreach

+0

'var_dump()'通常更有用,但也适用。 –

1
/** 
* @param array $record Record as returned from database 
* 
*/ 
private static function instantiate($record){ 
    //Create a new instance of this class. 
    $object = new self; 
    //Iterate the record to find all of the data 
    foreach($record as $attribute => $value){ 
     //If this class has a defined attribute which was found in the record 
     if($object->has_attribute($attribute)){ 
      //Set it to the value from the database. 
      $object->$attribute =$value; 
     } 
    } 
    //Return the instance for others to use 
    return $object; 
} 

这里是你的功能,回头看你的文档。

+0

我知道你说的所有我不需要评论。我想你不明白我的问题。记录的结构正在被拉取,它如何被存储在数组的Key和Value部分。现在您有一个字段名称和字段时间什么是密钥,什么是值,以及存储属性的位置和索引是什么。这是我想了解的,我敢打赌,聪明的嘴巴Elias Van Ootegem无法回答我的问题。 –

+0

关键是“年龄”,value是从数据库中获取的该行的“age”的值。 “属性”就是我们称之为对象一部分的变量(就像对象的一部分被称为**方法**一样)。 –

+0

@SalimAlmughairi为什么你不试试我的建议,所以你可以看到你在这里问的所有事情。另外,尽量保持礼貌('聪明的嘴'的评论)。有时很难从书面来源获得某人的意图(换句话说,也许Elias没有得到你的幽默感)。我们都尽力回答你的问题,有时候会有批评,有时候会有评论,有时会有代码。尝试欣赏所有方法。 –