【问题标题】:Sorting array from db query by one column of the array按数组的一列对数据库查询中的数组进行排序
【发布时间】:2013-10-08 17:12:55
【问题描述】:

是否可以从数据库查询的数组中获取结果并按结果中的一列排序?如果是这样,该怎么做?

这是我拥有的数组的一个示例:

Array ( [0] => stdClass Object ( [item] => 0 [size] => 2056515 [group] => SF2K [description] => 205/65R15 SAFFIRO SF2000 94V 40K [sort4] => 94 [ sort5] => V [sort6] => [price] => 69.14) [1] => stdClass Object ([item] => 8518 [size] => 2056515 [group] => FTOUR [description] => 205/ 65R15 FUZION TOUR BW 94H 40K [sort4] => 94 [sort5] => H [sort6] => [price] => 77.63 ) [2] => stdClass Object ( [item] => 106633 [size] => 2056515 [组] => SEREN [描述] => 205/65R15 BS TURANZA SER+ 94H 80K [sort4] => 94 [sort5] => H [sort6] => [price] => 124.07 ) )

我想按 [价格] 对其进行排序。我知道在这个例子中它们都已经按数字顺序排列了,但它们并不总是这样。

【问题讨论】:

  • 如果您真的想在 PHP 中执行此操作,可以使用此处描述的方法:stackoverflow.com/a/19253751/1615903 - 但是,您的 SQL 查询中的ORDER BY 语句会好得多。
  • 我有按价格排序的数据库,并且我的 SQL 查询中有一个 ORDER BY,问题是我无法从模板中删除另一个函数,在查询后更改 ORDER BY。这不是永久解决方案,只是临时解决方案,因此我有时间寻求真正的解决方案。感谢您的帮助。

标签: php mysql arrays sorting


【解决方案1】:

真正的解决方案是修复您的代码,以便您可以在查询中使用order by 语句。

也就是说,要在 php 中执行此操作,请创建一个比较器函数:

function myComparator($a, $b) {
    return $a->price - $b->price;
}

那么,在你的数组上,我们称它为$myArray,调用:

usort($myArray, 'myComparator');

更多详情请见php.net documentation on usort

【讨论】:

  • 感谢您的帮助,即使我做错了。谢谢!
【解决方案2】:

您可以使用 SQL 查询本身来执行此操作。在查询末尾添加以下内容之一:

升序(最低在前):

ORDER BY price ASC

降序(最高在前):

ORDER BY price DESC

【讨论】:

  • $tire_sql = $wpdb->prepare("SELECT item, size, group, description, sort4, sort5, sort6, price FROM _tires WHERE size = %d AND sort5 != '' ORDER按价格 ASC", $size );这就是我目前拥有的,我的问题是这个页面模板被大量纳入网站的主题。在我的查询之后,有一个函数会自行调用订单。所以我需要求助。我知道这是一件很糟糕的事情,但我只是在努力让它工作,然后我会有时间重写它。
  • 如果这些是你的限制,那么你必须做你必须做的;)
【解决方案3】:

您可以在 SQL 查询中添加“ORDER BY price DESC(或 ASC,取决于您的需要)”

【讨论】:

  • 在我的 sql 查询之后和我的结果显示之前,有一个函数是我无法更改或删除的 WordPress 模板的一部分,它正在更改我的查询后的顺序。所以我希望有一种方法可以通过数据库中的一列对数组进行排序,我可以在模板函数重新排序之后添加。
  • 我明白了……你可以试试这个,然后:function cmp($a, $b) { return $a["price"] - $b["price"]; } usort($arr, "cmp");
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-19
  • 2015-08-28
  • 1970-01-01
  • 2011-02-19
相关资源
最近更新 更多