【问题标题】:PHP: Timestamp sortingPHP:时间戳排序
【发布时间】:2013-04-02 22:48:51
【问题描述】:

我正在制作一个图片网站,我需要时间戳排序方面的帮助。我有大约 5 个不同的 SQL 查询来从数据库中获取信息。这些查询中的每一个都获取时间戳。

我想做的是从数据库中获取它,并使用 foreach 循环对所有查询中的图像进行排序。这可能听起来令人困惑,如果您不明白,请发表评论。

$images = array();

$stmt = $conn->prepare("SELECT images.*, group_images.* ORDER BY `timestamp` DESC");
$stmt->execute();

while ($images_row = $stmt->fetch(PDO::FETCH_ASSOC)) {
  $images[] = array(
    'image_id' => $images_row['image_id']);
}
return $images;

foreach($images as $image) {
    echo $image['image_id'];
    echo '<br/>';
}

这是我尝试尝试的一个查询,但结果无效。

错误:

$images = valley_images();

$sorted_data = array();

foreach($images as $key => $value) {
    if ($key == '时间戳') {
        $sorted_data[$value][] = $images;
    }
}

ksort($sorted_data);

【问题讨论】:

  • 我们可以看看您的数据库结构和您尝试过的任何 PHP 吗?

标签: php mysql sorting foreach timestamp


【解决方案1】:

如果我理解正确,这可能会有所帮助:

$data; //data from database, assuming it has a "timestamp"-key
$sorted_data = array();

foreach ($data as $key => $value) {
    if ($key == 'timestamp') {
        $sorted_data[$value][] = $data;
    }
}

ksort($sorted_data);

这样,您将获得一个数组,该数组按数据库中值的时间戳排序。如果每个时间戳只有一个条目,您可以省略[]

【讨论】:

  • 看起来不错,唯一的问题是,我如何将所有查询分配给 $data?
  • 例如 $data = $query1 + $query2 + $query3... 有许多不同的方法可以合并你的数组(参见php.net/manual/de/function.array-merge.php)。这取决于您从数据库中获取数据时的数据。
  • 啊,我明白了,非常感谢!现在我必须在 $sorted_data 中回显每个图像。我该怎么办?我通常使用我在主帖中发布的 foreach 循环。
  • 不能告诉你从这里开始的路,因为我不知道你的新数组的结构和内容;)但是如果你的循环以前工作过 - 为什么现在不行呢?我只是试试看。如果它不起作用并且您无法弄清楚,请尝试发布一个新问题。我想当前的问题得到了您满意的回答:)
  • 我收到“$sorted_data[$value][] = $images; 线上的非法偏移类型;”我在主帖中添加了代码。
猜你喜欢
  • 1970-01-01
  • 2012-11-08
  • 2011-08-22
  • 1970-01-01
  • 2018-12-22
  • 2012-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多