Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何对海量/对象进行排序_Php_Arrays_Zend Framework - Fatal编程技术网

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呢?