PHP类返回可以迭代的属性?

时间:2012-06-13 23:22:52

标签: php mysql

我很抱歉,在PHP问题上我最多也是新手,所以请保持温和。

我创建了一个类,它将从数据库中获取一些信息,并将各种值作为类的属性返回。这很有效,因为我只要求一行。

像这样:

$mydata = new mydataclass;

$mydata->getaparticularrowofdata($uniqueid);

$value1 = $mydata->variable1;
$value2 = $mydata->variable2;
$value3 = $mydata->variable3;

我想做点什么:

$mydata = new mydataclass;

$mydata->getafewrowsofdata($somefieldvaluetomatch);

if ($mydata->count != 0) {

// some sort of loop to iterate through each row until at the end, each time replacing       the property values with the new data

echo $mydata->variable1;
echo $mydata->variable2;
echo $mydata->variable3;

//

}

这显然只是一个例子。希望我有意义。

这可行吗?如果是这样,一些示例代码将是最受欢迎的:)

答案可能很简单,但由于某些原因,我今晚似乎无法绕过它。

非常感谢!

2 个答案:

答案 0 :(得分:0)

它在某种程度上取决于您返回的结果集的格式,但下面是一些示例,说明如何使用您的示例迭代结果集。

如果将结果集作为对象返回:

  $resultsObject = $mydata->getafewrowsofdata($somefieldvaluetomatch);

  foreach($resultsObject as $result)
  {
    echo $result->variable1;
    echo $result->variable2;
    echo $result->variable3;
  }

如果将结果集作为数组返回:

  $resultsArray = $mydata->getafewrowsofdata($somefieldvaluetomatch);

  foreach($resultsArray as $result)
  {
    echo $result['variable1'];
    echo $result['variable2'];
    echo $result['variable3'];
  }

答案 1 :(得分:0)

而不是在检索数据并随后迭代数据时修改mydataclass的属性(这会产生很多副作用,并且您将无法使用您的类同时选择多组数据),我建议你的getafewrowsofdata方法返回一个数据数组(每行一个元素)或返回一个实现Iterator接口的结果对象。

如果您正在使用PDO,一种简单的方法是让您的getafewrowsofdata函数使用PDO的fetchAll方法。这甚至可以返回自定义类的对象(参见示例4)。