【发布时间】:2015-06-19 11:34:42
【问题描述】:
我想要做的是遍历一个数组(在我的例子中是一个 MySql 结果),然后输出它,但同时也对数据做其他事情。
使用过程方法很容易做到这一点 - 只需将其放入 foreach 循环中即可。
但是,我想知道是否有一种方法可以将它集成到对象中。
因此,例如,我想将第一个字段放入会话中,我可以这样做:
<?php
class MyClass {
public $myArray=array();
public function __construct() {
//..
//Mysql query as $stmt
//..
$this->myArray=$stmt->fetchAll(PDO::FETCH_ASSOC);
}
}
$obj=new MyClass;
$i=0;
foreach($obj->myArray as $row) {
?>
<!-- Output HTML formatted data -->
<?
$_SESSION[$i]=$row['firstfield'];
$i++;
}
?>
但是,这会从课堂上拿走任务。
我可以在类中放置一个 foreach 循环,如下所示:
<?php
class MyClass {
public $myArray=array();
public function __construct() {
//..
//Mysql query as $stmt
//..
$this->myArray=$stmt->fetchAll(PDO::FETCH_ASSOC);
$i=0;
foreach($this->myArray as $row) {
$_SESSION[$i]=$row['firstfield'];
$i++;
}
}
}
$obj=new MyClass;
foreach($obj->myArray as $row) {
?>
<!-- Output HTML formatted data -->
<?
}
?>
但是,现在我们在同一个数据集上有 2 个循环。完成相同任务的时间增加一倍。
有没有办法在数组被循环时创建一个方法来做某事?有效地使数据集只需要循环一次...
编辑
另外,忘了提一下,我无法在对象中构建 HTML 的原因是因为它将用于具有不同 HTML 布局的不同页面。
【问题讨论】:
-
建设性反馈将不胜感激:D