按不同的值排序数组

时间:2016-01-03 12:08:08

标签: php arrays sorting

首先,我看了很多已经存在的问题,但无法找出任何描述我问题的人。

我有以下数组结构:

Array(
    0 => Array(
        [customerID] => 3
        [forename] => 
        [name] => 
        [company] => Third company
    )

    1 => Array(
        [customerID] => 2
        [forename] => Jane
        [name] => Smith
        [company] => 
    )

    2 => Array(
        [customerID] => 1
        [forename] => John
        [name] => Smith
        [company] => Best Company
    )
)

通常我想在HTML选择字段中打印forename和(last)名称。它适用于最后两个数组键但不适用于第一个数组键,因为它没有forename或(last)名称。打印公司名称没有问题,但问题是订单。

我使用ORDER BY forename ASC从数据库中选择数组,因此每次都没有forename和(last)名称的数组是第一个值。 在这种情况下,我希望订单是Array(1),Array(2),Array(0),这样字母顺序仍然存在(Jane,John,Third公司),但我无法弄清楚如何实现这一点排序类型,以便尊重forename键和公司键,并将它们组合排序。

如果公司名称为Beta,则Array(0)应保留在第一位,如果公司名称为Jesse James Ltd.,则应在其他两个阵列之间进行排序。

任何建议都会受到赞赏。

3 个答案:

答案 0 :(得分:1)

这将根据列对行进行排序,如果列值为空,它将显示在结果的末尾。

www.example.com

修改

好的,根据我的理解,这应该有效。如果这不是你想要的,请随时告诉我。

SELECT * FROM table_name ORDER BY IF(foreName = '', 1, 0), foreName;

这个想法基本上是加入两列并根据它进行排序。

答案 1 :(得分:0)

forename字段按升序排序,但将带有空值的记录放在行集的末尾:

SELECT customerID, forename, name, company
FROM table 
ORDER BY IF (`forename` <> '', 0, 1) ASC

答案 2 :(得分:0)

您是否只能使用(if)条件检查空白值并跳过它?