以不连续的方式对php数组进行排序?

时间:2014-03-27 07:34:54

标签: php arrays sorting

我不知道我是否在标题中非常清楚,因为英语不是我的主要语言,但我会尝试说清楚......

我从一个包含一些' ID的数组开始。和一些“价值观”。

我需要的是组织“' ID'在一个新的数组中,如果可能的话,当'值'他们是相似的。

所以我提出了一个解决方案,但如果有很多价值类型,那么传播是不均衡的...所以,如果你们中的一个人有一个不同的,更好的解决方案,那么我的所有耳朵都会被打开!

谢谢。

以下是我的想法:

function discontinus_sort($to_sort, $order_by, $id){

while (count(array_count_values($to_sort)) >1) {

    $order[] = [$id => key($to_sort) , $order_by => $to_sort[key($to_sort)]];

    $holder = $to_sort[key($to_sort)];

    unset($to_sort[key($to_sort)]);

    reset($to_sort);

    if (isset($to_sort[key($to_sort)])) {

            while( $holder == $to_sort[key($to_sort)] ) {
            next($to_sort);
        }
    }
}

while ($to_sort) {

    $order[] = [$id => key($to_sort) , $order_by => $to_sort[key($to_sort)]];

    unset($to_sort[key($to_sort)]);

}
return $order;
}

以及例如:

$test= [0=>'red',1=>'red',2=>'red',3=>'crimson',4=>'aqua',5=>'chartreuse',6=>'green',7=>'chartreuse',8=>'red',9=>'crimson',10=>'crimson',11=>'aqua',12=>'aqua',13=>'green',14=>'crimson'];


$test_order = discontinus_sort($test, 'couleur', 'id');

foreach ($test_order as $key) { 

echo '<div style="height: 100px; width: 100px; margin:5px; float: left; background-     color:'.$key['couleur'].'; " ></div>';
}

如果你换成很多值,让我们用红色说,你最后会得到一大堆红色...

0 个答案:

没有答案