尝试了这两种方式,评论的代码是原始的,结果两次都是相同的。
/*
$sql = "select * from modx_site_content where context_key = '$context' order by ABS(id) ASC;";
$results = $modx->query($sql);
foreach($results as $result){
$output[] = '('.$result['id'].') '.$result['pagetitle'].'=='.$result['id'];
}
*/
$criteria = $modx->newQuery('modResource');
$criteria->where(array(
'context_key' => $context,
));
$criteria->sortby('id','ASC');
$results = $modx->getCollection('modResource',$criteria);
foreach($results as $result){
$result = $result->toArray();
$output[] = '('.$result['id'].') '.$result['pagetitle'].'=='.$result['id'];
}
结果将是:100,101,102,103,50,51,52,53等。它们将它们排序为字符串而不是整数。我检查了数据库该字段是主键[和整数],如果你注意到即使在我的注释代码中我试图将它显式地排序为整数。
这里发生了什么&如何才能正确排序?
[即50,51,52,53,100,101,012等...]
答案 0 :(得分:0)
您的PHP数组已正确排序,您的MODx或DB没有任何问题 之一:
在客户端,当您处理结果对象时,不保证javascript对象被排序(虽然它们是"几乎"总是,依赖于浏览器),它们是按词汇排序的。使用数组 - 数组执行具有保证顺序。 ECMA这样说..
您稍后会在处理器上发生一些php sort()吗?