我不知道我是否在标题中非常清楚,因为英语不是我的主要语言,但我会尝试说清楚......
我从一个包含一些' 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>';
}
如果你换成很多值,让我们用红色说,你最后会得到一大堆红色...