首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP,下拉列表中的排序选项

PHP,下拉列表中的排序选项
EN

Stack Overflow用户
提问于 2013-02-27 19:39:52
回答 1查看 51关注 0票数 0

我的下拉列表中有这样的选项

代码语言:javascript
复制
something 4M/512k
something 10M/768k
something 4M/2M
something 10M/5M
something 10M/10M
something 20M/20M (FTTH)
something 60M/60M (FTTH)
something 100M/100M (FTTH)

现在的排序应该是这样的:不要看单词,排序的第一列应该是4M或10M...the值,在/ sign.After之前,排序应该继续到第二列,这是512k或2M...but它取决于第二列中的值是否包含k字符(意味着10M...the)应该是第一个(M表示兆字节)。第三列应该是FTTH.For example,如果该行包含(FTTH)个单词,它应该放在最后...

这是它应该是什么样子的示例

代码语言:javascript
复制
something 4M/512k
something 4M/2M
something 10M/768k
something 10M/5M
something 10M/10M
something 20M/20M (FTTH)
something 60M/60M (FTTH)
something 100M/100M (FTTH)
EN

回答 1

Stack Overflow用户

发布于 2013-02-27 19:42:57

您可以使用http://www.php.net/usort创建自己的排序方法,对包含下拉选项的数组进行排序。

这应该会给你一个好的开始:

代码语言:javascript
复制
<?php
$data[] = "something 4M/512k";
$data[] = "something 10M/768k";
$data[] = "something 4M/2M";
$data[] = "something 10M/5M";
$data[] = "something 10M/10M";
$data[] = "something 20M/20M (FTTH)";
$data[] = "something 60M/60M (FTTH)";
$data[] = "something 100M/100M (FTTH)";

function mysort($a, $b){
  list($something, $a_speed) = explode(" ", $a);
  list($something, $b_speed) = explode(" ", $b);

  list($a_speed_part_1, $a_speed_part_2) = explode("/", $a_speed);
  list($b_speed_part_1, $b_speed_part_2) = explode("/", $b_speed);

  //TODO: add M/k comparison or calculation

  if(intval($a_speed_part_1) > intval($b_speed_part_1)){
    return 1;
  } elseif (intval($a_speed_part_1) < intval($b_speed_part_1)) {
    return -1;
  } else {
    if(intval($a_speed_part_2) > intval($b_speed_part_2)){
      return 1;
    } elseif (intval($a_speed_part_2) < intval($b_speed_part_2)) {
      return -1;
    } else {
      return 0;
    }
    return 0;
  }
}

usort($data, "mysort");
echo "<pre>";
print_r($data);
echo "</pre>";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15111172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档