Php 如何对海量/对象进行排序
我有一大笔钱。 要输出此海量数据的信息,我需要:Php 如何对海量/对象进行排序,php,arrays,zend-framework,Php,Arrays,Zend Framework,我有一大笔钱。 要输出此海量数据的信息,我需要: <?php foreach ($this->events as $usern): ?><?php foreach ($usern as $user): ?> <tr> <td><?php echo $user['id']; ?></td> <td><?php echo $user->
<?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 ?>
你从数据库中读取数据吗?然后,只需向查询中添加按id排序DESC即可 否则,您可以在PHP中使用usort:
usort($events, function ($a, $b) { return $a->id - $b->id; });
你从数据库中读取数据吗?然后,只需向查询中添加按id排序DESC即可 否则,您可以在PHP中使用usort:
usort($events, function ($a, $b) { return $a->id - $b->id; });
这太糟糕了,因为你必须浏览两次列表,但是你可以
$events_arr = array();
<?php foreach ($this->events as $usern): ?><?php foreach ($usern as $user): ?>
$events_arr[$user_id][] = $usern; endforeach; endforeach;
ksort($events_arr);
这太糟糕了,因为你必须浏览两次列表,但是你可以
$events_arr = array();
<?php foreach ($this->events as $usern): ?><?php foreach ($usern as $user): ?>
$events_arr[$user_id][] = $usern; endforeach; endforeach;
ksort($events_arr);
向查询中添加订单无法达到目的
$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'));
不确定这是否有助于实现目标,也许。向查询中添加订单无法实现目标
$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'));
不确定这是否有助于实现目标。决定取消DB表的规范化,以简化选择数据的过程。让我们看看它是否变得更好。决定对我的DB表进行去规范化,以简化选择数据的过程。让我们看看情况是否好转。数据来自哪里?如果您从某个数据库中读取数据,排序就会容易得多。好的,通过这种方式选择数据。。。但是真的没有->排序'id',desc'方法吗?有一个方法,但是如果我使用它,我会得到体量的两个排序部分,我想对整个体量进行排序。这也可以通过创建sql视图和/或使用Union来完成。数据来自何处?如果您从某个数据库中读取数据,排序就会容易得多。好的,通过这种方式选择数据。。。但是真的没有->sort'id',desc'方法吗?有一个方法,但是如果我使用它,我会得到体量的两个排序部分,我想对整个体量进行排序。这也可以通过创建sql视图和/或使用unionsI从数据库中读取来完成,但我不能这样排序,因为我的海量数据包括来自不同选择操作的数据你已经从Subselect听到了吗?比如SELECT*FROM SELECT big FROM table SORT BY id DESC,或者这太慢了?您可以对RDBMS中的任何内容进行排序。除其他用途外,它们也用于此。如果您发现自己需要对数据集进行排序,请在RDBMS中进行排序,而不是在应用程序语言中进行排序,除非有一些巨大的逻辑错误阻止了数据库对其进行有效排序。在您编写的尝试usort之后,我开始出现错误,因此此方法不起作用。在提问之前,我尝试了一些数组排序函数,但不知道在这种情况下如何使用它们。关于子选择,也许我可以用一个选择代替多个选择并对结果进行排序,我认为这样会更好,但我也不知道how@user1956641您想告诉我$events的确切结构吗?我想我缺少从数据库中读取的信息,但我不能这样排序,因为我的海量数据包含了来自不同选择操作的数据您已经从Subselect中听到了吗?比如SELECT*FROM SELECT big FROM table SORT BY id DESC,或者这太慢了?您可以对RDBMS中的任何内容进行排序。除其他用途外,它们也用于此。如果您发现自己需要对数据集进行排序,请在RDBMS中进行排序,而不是在应用程序语言中进行排序,除非有一些巨大的逻辑错误阻止了数据库对其进行有效排序。在您编写的尝试usort之后,我开始出现错误,因此此方法不起作用。在提问之前,我尝试了一些数组排序函数,但不知道在这种情况下如何使用它们。关于子选择,也许我可以用一个选择代替多个选择并对结果进行排序,我认为这样会更好,但我也不知道how@user1956641您想告诉我$events的确切结构吗?我想我缺少信息这个变量很有趣,我想如果我没有在不同的循环中用元素填充$events它就可以工作。这个变量很有趣,我想如果我没有在不同的循环中用元素填充$events它就可以工作。但是我从哪里得到$user\u id呢?但是我从哪里得到$user\u id呢?