2015-09-10 19 views
0

試過這兩種方式,評論代碼是原始的,結果是兩次相同。Modx將資源廣告排序爲字符串,而不是數字

/* 
$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

很奇怪。你的代碼*應該*返回按照數字順序排列的ID。如果你var_dump $輸出,它排序錯誤?在數據庫中,id是:int(10)unsigned NOT NULL AUTO_INCREMENT – oori

+0

yes - 如果轉儲$ output數組,它將按照數據庫的順序正確排序 –

回答

0

你的PHP數組排序正確,沒有與您鏌鋣或DB任何問題。
或者:

  1. 在客戶端,當你處理結果對象,JavaScript的不guarantied對象進行排序(儘管他們是「幾乎」永遠是,依賴於瀏覽器),他們按詞彙排序。使用數組 - 數組已保證順序。 ECMA這麼說..

  2. 你有一些PHP排序()後來在處理器上發生?

相關問題