首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP中的自定义排序(按衣服尺码)

PHP中的自定义排序(按衣服尺码)
EN

Stack Overflow用户
提问于 2015-12-22 08:51:30
回答 2查看 169关注 0票数 0

我目前正在使用以下自定义排序功能,以便按衣服尺码排序:

代码语言:javascript
复制
function sort_size($a, $b) {
    static $sizes = array('STANDART', 'XXS', 'XS', 'S', 'M', 'L', 'XL', 'XXL', 'XXXL', 'XXXXL', 'XXXXXL');

    $asize = 100;
    $apos = -1;
    $bsize = 100;
    $bpos = -1;

    foreach($sizes AS $val => $str) {
        if(($pos = strpos($a, $str)) !== FALSE && ($apos < 0 || $pos < $apos)) {
            $asize = $val;
            $apos = $pos;
        }

        if(($pos = strpos($b, $str)) !== FALSE && ($bpos < 0 || $pos < $bpos)) {
            $bsize = $val;
            $bpos = $pos;
        }
    }

    return($asize == $bsize ? 0 : ($asize > $bsize ? 1 : -1));
}

usort($color, 'sort_color');

但我得到了以下结果:

代码语言:javascript
复制
S,M,L,XL,XXL,34,32,36,33,38,31,40

我如何修改它,以便对numbers也进行排序?

EN

回答 2

Stack Overflow用户

发布于 2015-12-22 09:06:08

代码语言:javascript
复制
function sort_color($a, $b) {
    $sizes = [ .... ];
    $av = array_search($a, $sizes);
    $bv = array_search ($b, $sizes);
    if($av === FALSE or $bv === FALSE)
       throw new InvalidArgumentException("Unknown size $a or $b");
    return $av - $bv;
}
票数 0
EN

Stack Overflow用户

发布于 2015-12-22 09:06:40

尝试:

代码语言:javascript
复制
function sortBySizes($sizeA, $sizeB)
{
    $sizes = [32, 'S', 34, 'M', 36, 'L', 38, 'XL'];

    $keyForSizeA = array_search($sizeA, $sizes);
    $keyForSizeB = array_search($sizeB, $sizes);

    if ($keyForSizeA === $keyForSizeB) return 0;

    return ($keyForSizeA > $keyForSizeB) ? 1 : -1;
}

usort($clothes, "sortBySizes");

这是一个简单的函数,但如果需要混合S、M、L、XL和32、34、36、38值,则需要在数组$sizes中定义所有可能的大小以进行比较。另外,如果您不想定义所有数值(32,34,...)您可以创建关联数组:

代码语言:javascript
复制
$array = [
    '32' => 'S',
    '34' => 'M',
    '36' => 'L',
];

然后array_search()返回数字大小(当然,如果大小不是字母值,你需要写条件),你可以将它与默认的数字大小进行比较。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34406849

复制
相关文章

相似问题

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