我有一个巨大的$events
。
为了输出这个庞大的信息,我做了:
<?php foreach ($this->events as $usern): ?><?php foreach ($usern as $user): ?>
<tr>
<td><?php echo $user['id']; ?></td>
<td><?php echo $user->resource_types; ?></td>
<td><?php echo $user->resource_ids; ?></td>
<td><?php echo $user->action; ?></td>
<td><?php echo $this->owner($user->originator); ?></td>
<td><?php echo $user->event_date; ?></td>
<td>
<?php //if($this->canManageBusiness($user->id)): ?>
<?php // endif ?>
</td>
</tr>
<?php endforeach ?><?php endforeach ?>
有趣的是,我可以同时使用$user->id
和$user['id']
sintax。但是不要紧。
我如何通过$user['id']
desc?
编辑: 我从数据库中获取数据,但不是通常的方式,所以我不能使用sql语法来排序结果:
$events[] =$this->_dbTable->fetchAll($this->_dbTable->select()->from($this->_dbTable, array('id','resource_types','resource_ids','action','originator','event_date'))->where('resource_types = ?', 'business')->where('resource_ids',$bus->id));
$events[] =$this->_dbTable->fetchAll($this->_dbTable->select()->from($this->_dbTable, array('id','resource_types','resource_ids','action','originator','event_date'))->where('resource_types = ?', 'document-type')->where('resource_ids',$dt->id));
return $events
答案 0 :(得分:2)
您是否从数据库中读取数据?然后只需添加到您的查询SORT BY id DESC
否则你可以在PHP中使用usort():
usort($events, function ($a, $b) { return $a->id - $b->id; });
答案 1 :(得分:1)
在查询中添加order()
不会让您到达那里?
$events[] =$this->_dbTable->fetchAll($this->_dbTable->select()
->from($this->_dbTable,
array('id','resource_types','resource_ids','action','originator','event_date'))
->where('resource_types = ?', 'business')
->where('resource_ids',$bus->id)
->order('id DESC'));
$events[] =$this->_dbTable->fetchAll($this->_dbTable->select()
->from($this->_dbTable,
array('id','resource_types','resource_ids','action','originator','event_date'))
->where('resource_types = ?', 'document-type')
->where('resource_ids',$dt->id)
->order('id DESC'));
return $events
在我看来,这一切都来自同一张表,如果是这样,为什么不建立一个查询呢?
可能是这样的:
$events[] = $this->_dbTable->fetchAll($this->_dbTable->select()
->from($this->_dbTable,
array('id','resource_types','resource_ids','action','originator','event_date'))
->where('resource_types IN (?)', array('business', 'document-type'))
->where('resource_ids IN (?)', array($bus->id, $dt->id))
->order('id DESC'));
不确定这是否有助于你到达那里,也许。
答案 2 :(得分:0)
这很糟糕,因为你必须经历两次清单,但你可以......
$events_arr = array();
<?php foreach ($this->events as $usern): ?><?php foreach ($usern as $user): ?>
$events_arr[$user_id][] = $usern; endforeach; endforeach;
ksort($events_arr);
现在您可以使用事件arr,它按user_id
排序foreach ($events_arr as $user_id => $usern) {
foreach ($usern as $user) {
echo $user_id . ": " . $user->action;
}
}
答案 3 :(得分:0)
决定对我的数据库表进行denormolise以使选择数据的处理更容易。让我们看看它是否变得更好。