按自定义数组对行进行排序

Posted

技术标签:

【中文标题】按自定义数组对行进行排序【英文标题】:sort rows by a custom array 【发布时间】:2019-05-26 18:23:57 【问题描述】:

是否可以通过从另一个表或以某种方式给出的自定义数组 ids 对行进行排序。

$str = "5,2,3,6,911,18,118,65,985,15...";  

$arr = explode(',', $str);

function get_titles($status)
    global $db;
    $sql = "select * from arts where status = :astatus order by " . $arr . " asc";
    $st = $db->prepare($sql);
    $st->execute([":astatus" => $status]);
    ...

【问题讨论】:

这可能会有所帮助...***.com/questions/348410/… mysql sort order by array value的可能重复 @Sean,您的链接上的两个答案都是关于sort by field。我没有作为排序标准的字段,而是一个外部数组。 该字段是订购的依据。您的数组是附加值。 IE。 ... ORDER BY field(id, ". $str .") ... 如果答案正确请批准 【参考方案1】:

如果您想通过自定义id 订购...

# $str = "5,2,3,6,911,18,118,65,985,15...";
# Values separated by comma
# It can be from array
#     $str = implode(",",[5,2,3,6,911,18,118,65,985,15])

$str = "5,2,3,6,911,18,118,65,985,15";  

function get_titles($status,$arr)
    global $db;
    $sql = "SELECT * FROM arts WHERE status = :astatus ORDER BY FIELD(id,".$arr .") ASC";
    $st = $db->prepare($sql);
    $st->execute([":astatus" => $status]);
    ...


get_titles($status,$str)

【讨论】:

以上是关于按自定义数组对行进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何按自定义顺序对 JavaScript 中的数组进行排序? [复制]

PHP按自定义顺序对工作日和月份-年份数组进行排序

在 Eloquent 中按自定义顺序对集合进行排序 [重复]

按自定义字典顺序对字符串进行排序

按自定义时间间隔对对象数组进行分组

python按自定义顺序排序字典列表[重复]