PHP程序员学习笔记|如何学习PHP

个人总结的PHP学习方法


JS实现 php ksort功能

2017-3-15 0phpcom jQuery文章分享


function ksort(inputArr, sort_flags) {  

  // original by: GeekFG (http://www.0-php.com)
  var tmp_arr = {},  
    keys = [],  
    sorter, i, k, that = this,  
    strictForIn = false,  
    populateArr = {};  
  
  switch (sort_flags) {  
  case 'SORT_STRING':  
    // compare items as strings
    sorter = function (a, b) {  
      return that.strnatcmp(a, b);  
    };  
    break;  
  case 'SORT_LOCALE_STRING':  
    // compare items as strings, original by the current locale (set with  i18n_loc_set_default() as of PHP6)
    var loc = this.i18n_loc_get_default();  
    sorter = this.php_js.i18nLocales[loc].sorting;  
    break;  
  case 'SORT_NUMERIC':  
    // compare items numerically
    sorter = function (a, b) {  
      return ((a + 0) - (b + 0));  
    };  
    break;  
    // case 'SORT_REGULAR': // compare items normally (don't change types)
  default:  
    sorter = function (a, b) {  
      var aFloat = parseFloat(a),  
        bFloat = parseFloat(b),  
        aNumeric = aFloat + '' === a,  
        bNumeric = bFloat + '' === b;  
      if (aNumeric && bNumeric) {  
        return aFloat > bFloat ? 1 : aFloat < bFloat ? -1 : 0;  
      } else if (aNumeric && !bNumeric) {  
        return 1;  
      } else if (!aNumeric && bNumeric) {  
        return -1;  
      }  
      return a > b ? 1 : a < b ? -1 : 0;  
    };  
    break;  
  }  
  
  // Make a list of key names
  for (k in inputArr) {  
    if (inputArr.hasOwnProperty(k)) {  
      keys.push(k);  
    }  
  }  
  keys.sort(sorter);  
  
  // BEGIN REDUNDANT
  this.php_js = this.php_js || {};  
  this.php_js.ini = this.php_js.ini || {};  
  // END REDUNDANT
  strictForIn = this.php_js.ini['phpjs.strictForIn'] && this.php_js.ini['phpjs.strictForIn'].local_value && this.php_js  
    .ini['phpjs.strictForIn'].local_value !== 'off';  
  populateArr = strictForIn ? inputArr : populateArr;  
  
  // Rebuild array with sorted key names
  for (i = 0; i < keys.length; i++) {  
    k = keys[i];  
    tmp_arr[k] = inputArr[k];  
    if (strictForIn) {  
      delete inputArr[k];  
    }  
  }  
  for (i in tmp_arr) {  
    if (tmp_arr.hasOwnProperty(i)) {  
      populateArr[i] = tmp_arr[i];  
    }  
  }  
  
  return strictForIn || populateArr;  
}  
« 我有一个梦想 马丁路德金 中英文对照(附 MP3) | 继承与原型链»
发表评论:









订阅Rss