当多维数组中存在重复项时,数组移动


array move when a duplicate exists in an multidimensional array


我有这个代码.= 在 php 中有新手经验

$values   =  array(
                   array('field'   =>  1),
                   array('field'   =>  2),
                   array('field'   =>  2),
                   array('field'   =>  3),
                   array('field'   =>  4),
                   array('field'   =>  4),
                   );
print_r($values);
foreach($values as $k => $v) { 
      //Check for duplicate
      //Move the value "field" to another part of the array which has no equal value on range of index 2 
}

?>
一种代码,如果数组在 2 个索引内找到重复项,则移动数组,直到到达没有重复项的数组。

我的预期结果将是:可以是满足给定传导的不同结果。

 1.   Array(
                [0] => Array('field'   =>  4),
                       Array('field'   =>  2),
                       Array('field'   =>  1),
                       Array('field'   =>  4),
                       Array('field'   =>  3),
                       Array('field'   =>  2)
                       );
 2.   Array(
                [0] => Array('field'   =>  2),
                       Array('field'   =>  1),
                       Array('field'   =>  4),
                       Array('field'   =>  3),
                       Array('field'   =>  2),
                       Array('field'   =>  4)
                       );


我想使用array_splice和array_unique但不知道如何开始。也许这是一个循环而不是foreach。查找重复项,如果发现重复项,则移动索引为 2 的值。请帮助我。

尝试对数组函数进行排序。这可以完成这项工作,并不完美,但是一个很好的起点):

<?php
$values   =  array(
  array('field'   =>  1),
  array('field'   =>  1),
  array('field'   =>  2),
  array('field'   =>  2),
  array('field'   =>  2),
  array('field'   =>  3),
  array('field'   =>  3),
  array('field'   =>  4),
  array('field'   =>  4),
);
print_r($values);
uksort($values, create_function('$x,$y','return ($y === $x) ? -1 : 1;'));
print_r($values);
?>

我不知道你的价值观有多多样化,祝你好运。