【问题标题】:Get matching records from associative array in PHP从 PHP 中的关联数组中获取匹配记录
【发布时间】:2018-10-04 05:20:37
【问题描述】:

我在 PHP 中查询一个数据库,它会得到如下表所示的结果。它们存储在关联数组中。

我现在想要做的是只选择某个work_type 的记录并返回相同类型的associative array。例如"Part Time"。然后我希望能够根据我决定的任何列对这些记录进行排序。我该怎么做?

据我所知……

$data = $_SESSION['results']; //the database query results

foreach($data as $key => $row)
{
    if(in_array($row['work_type'], array('Part Time')))
    {
        $type[$key] = $row['work_type'];
        $date_posted[$key] = $row['created_at'];
    }
}
array_multisort($type, SORT_ASC, $date_posted, SORT_ASC, $data);

这不起作用,因为我发送到multi-sort 的 $data 数组现在与我创建的数组的大小不同。

【问题讨论】:

  • 什么是array('Part Time')??
  • array_filter 比这里的 foreach 循环过滤结果更有意义,因此您只有某种类型的记录。不过,将 WHERE 子句添加到数据库查询中会更有意义。同样,可以使用ORDER BY 进行排序,假设这是 SQL 或其任何方言。
  • 您可能想检查https://datatables.net/ 的表格排序。
  • 只重新查询数据库还是在PHP中对数组进行排序更有效?
  • array('Part Time') 是因为 in_array 不允许我将 row['work_type'] 与字符串进行比较。

标签: php sorting associative-array columnsorting


【解决方案1】:

好的,我通过再次从数据库中获取数据解决了这个问题。显然这更有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多