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) | 继承与原型链»
发表评论:


站点统计
  • 建站日期: 2015-2-10 18:22
  • 运行时间: 3324 天
  • 日志总数: 221 篇
  • 置顶日志: 0 篇
  • 草稿数目: 15 篇
  • 待审文章: 0 篇
  • 页面数量: 0 个
  • 评论数量: 53 条
  • 微语数量: 5 条
  • 微语评论: 0 条
  • 友链数量: 1 个
  • 加密文章: 1 篇
  • 分类总量: 10 个
  • 父分类数: 10 个
  • 子分类数: 0 个
  • 用户数量: 1 人
  • 管理员数: 1 人
  • 驻站作者: 0 位
  • 标签数量: 11 个
  • 附件总量: 223 件
  • 最后发表: 2021-5-8 16:17



订阅Rss