Modx将资源广告排序为字符串,而不是数字

时间:2015-09-10 19:40:38

标签: modx modx-revolution

尝试了这两种方式,评论的代码是原始的,结果两次都是相同的。

/*
$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等...]

1 个答案:

答案 0 :(得分:0)

您的PHP数组已正确排序,您的MODx或DB没有任何问题 之一:

  1. 在客户端,当您处理结果对象时,不保证javascript对象被排序(虽然它们是"几乎"总是,依赖于浏览器),它们是按词汇排序的。使用数组 - 数组执行具有保证顺序。 ECMA这样说..

  2. 您稍后会在处理器上发生一些php sort()吗?