dsfg3241 2013-09-24 04:40
浏览 50

subval_sort()乱序

I have generated an array from a MySQL query which I then re-order using subval_sort(). This works fine except where the letter "E" figures in the ordering. In those cases, the value with the "E" in it comes out first. I have four instances of this happening, but everywhere else (this a very large site, btw) the ordering works fine.

Here is my array as it is generated from the db query:

Array ( 
[] => Array ( [Item #] => 091055070 [Size Code] => 7 [D Diameter] => 5/8" [d Small Diameter (Pilot) ] => 1/4" [L Length] => 3 1/4" ) 
[1] => Array ( [Item #] => 091055060 [Size Code] => 6 [D Diameter] => 1/2" [d Small Diameter (Pilot) ] => 7/32" [L Length] => 3" ) 
[2] => Array ( [Item #] => 091055050 [Size Code] => 5 [D Diameter] => 7/16" [d Small Diameter (Pilot) ] => 3/16" [L Length] => 2 3/4" ) 
[3] => Array ( [Item #] => 091055040 [Size Code] => 4 [D Diameter] => 5/16" [d Small Diameter (Pilot) ] => 1/8" [L Length] => 2 1/8" ) 
[4] => Array ( [Item #] => 091055030 [Size Code] => 3 [D Diameter] => 1/4" [d Small Diameter (Pilot) ] => 7/64" [L Length] => 2" ) 
[5] => Array ( [Item #] => 091055020 [Size Code] => 2 [D Diameter] => 3/16" [d Small Diameter (Pilot) ] => 5/64" [L Length] => 1 7/8" ) 
[6] => Array ( [Item #] => 091055010 [Size Code] => 1 [D Diameter] => 1/8" [d Small Diameter (Pilot) ] => 3/64" [L Length] => 1 1/4" ) 
[7] => Array ( [Item #] => 0910550E0 [Size Code] => 0 [D Diameter] => 1/8" [d Small Diameter (Pilot) ] => 1/32" [L Length] => 1 1/4" ) 
[8] => Array ( [Item #] => 091055080 [Size Code] => 8 [D Diameter] => 3/4" [d Small Diameter (Pilot) ] => 5/16" [L Length] => 3 1/2" ) 
[9] => Array ( [Item #] => 0910550D0 [Size Code] => 00 [D Diameter] => 1/8" [d Small Diameter (Pilot) ] => .025" [L Length] => 1 1/4" ) 
[10] => Array ( [Item #] => 0910550C0 [Size Code] => 000 [D Diameter] => 1/8" [d Small Diameter (Pilot) ] => .020" [L Length] => 1 1/4" ) 
[11] => Array ( [Item #] => 0910550B0 [Size Code] => 0000 [D Diameter] => 1/8" [d Small Diameter (Pilot) ] => .015" [L Length] => 1 1/4" ) 
[12] => Array ( [Item #] => 0910550A0 [Size Code] => 00000 [D Diameter] => 1/8" [d Small Diameter (Pilot) ] => .010" [L Length] => 1 1/4" ) )

I run this line:

$productArray = subval_sort($productArray,'Item #');

Then out comes this:

Array ( 
[0] => Array ( [Item #] => 0910550E0 [Size Code] => 0 [D Diameter] => 1/8" [d Small Diameter (Pilot) ] => 1/32" [L Length] => 1 1/4" ) 
[1] => Array ( [Item #] => 091055010 [Size Code] => 1 [D Diameter] => 1/8" [d Small Diameter (Pilot) ] => 3/64" [L Length] => 1 1/4" ) 
[2] => Array ( [Item #] => 091055020 [Size Code] => 2 [D Diameter] => 3/16" [d Small Diameter (Pilot) ] => 5/64" [L Length] => 1 7/8" ) 
[3] => Array ( [Item #] => 091055030 [Size Code] => 3 [D Diameter] => 1/4" [d Small Diameter (Pilot) ] => 7/64" [L Length] => 2" ) 
[4] => Array ( [Item #] => 091055040 [Size Code] => 4 [D Diameter] => 5/16" [d Small Diameter (Pilot) ] => 1/8" [L Length] => 2 1/8" ) 
[5] => Array ( [Item #] => 091055050 [Size Code] => 5 [D Diameter] => 7/16" [d Small Diameter (Pilot) ] => 3/16" [L Length] => 2 3/4" ) 
[6] => Array ( [Item #] => 091055060 [Size Code] => 6 [D Diameter] => 1/2" [d Small Diameter (Pilot) ] => 7/32" [L Length] => 3" ) 
[7] => Array ( [Item #] => 091055070 [Size Code] => 7 [D Diameter] => 5/8" [d Small Diameter (Pilot) ] => 1/4" [L Length] => 3 1/4" ) 
[8] => Array ( [Item #] => 091055080 [Size Code] => 8 [D Diameter] => 3/4" [d Small Diameter (Pilot) ] => 5/16" [L Length] => 3 1/2" ) 
[9] => Array ( [Item #] => 0910550A0 [Size Code] => 00000 [D Diameter] => 1/8" [d Small Diameter (Pilot) ] => .010" [L Length] => 1 1/4" ) 
[10] => Array ( [Item #] => 0910550B0 [Size Code] => 0000 [D Diameter] => 1/8" [d Small Diameter (Pilot) ] => .015" [L Length] => 1 1/4" ) 
[11] => Array ( [Item #] => 0910550C0 [Size Code] => 000 [D Diameter] => 1/8" [d Small Diameter (Pilot) ] => .020" [L Length] => 1 1/4" ) 
[12] => Array ( [Item #] => 0910550D0 [Size Code] => 00 [D Diameter] => 1/8" [d Small Diameter (Pilot) ] => .025" [L Length] => 1 1/4" ) )

Any ideas? Thanks in advance

  • 写回答

1条回答 默认 最新

  • douhuang3833 2013-09-24 05:31
    关注

    maybe this modification of function from firsttube.com should work:

    function subval_sort($a,$subkey,$sort_type="str") {
        foreach($a as $k=>$v) {
                    if($sort_type == "hex") {
                        $b[$k] = hexdec($v[$subkey]);
                    } else {
                        $b[$k] = strtolower($v[$subkey]);
                    }
        }
        asort($b);
        foreach($b as $key=>$val) {
            $c[] = $a[$key];
        }
        return $c;
    }
    
    
    print_r($arr);
    echo "<hr>";
    
    $arr2 = subval_sort($arr, "Item #","hex");
    print_r($arr2);
    
    评论

报告相同问题?

悬赏问题

  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan