如何将数组中的1个值排序到顶部


How to sort 1 value in array to top?

例如:

$array = ("1", "2", "3", "4", "5");

现在我想对顶部的数字3进行排序,结果是:

$array = ("3", "1", "2", "4", "5");

如果您想对除一个之外的所有数组进行排序,请尝试以下操作:

function cmpToTop($a, $b){
    if($a === '3') return -1; //Change comparison value
    if($b === '3') return 1; //Change comparison value
    if($a === $b) return 0;
    return ($a < $b) ? -1 : 1;
}
$a = array('3', '2', '5', '6', '3', '1');
cmpToTop($a, "cmp"); //Result : array('3', '3', '1', '2', '5', '6')

在圆圈中移动时使用:

$array = array('1', '2', '3', '4', '5');
while($array[0] != '3')
    array_push($array, array_shift($array));

您只需存储要放在顶部的数字
将每个数字向后移动一步;然后你把存储的号码放在第一位。

我希望有人能有更好的方法来做这件事,因为这似乎是一个简单的解决方法,但这个功能会起作用:

<?php
    $arrayData = array(1, 2, 3, 4);
    echo "<pre>"; print_r($arrayData); echo "</pre>";
    $arrayData = moveToTop($arrayData, 2);
    echo "<pre>"; print_r($arrayData); echo "</pre>";

    function moveToTop($someArray, $key){
        $tmp = $someArray[$key];
        unset($someArray[$key]);
        array_unshift($someArray, $tmp);
        return array_values($someArray);
    }
?>

结果是:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
)
Array
(
    [0] => 3
    [1] => 1
    [2] => 2
    [3] => 4
)
  $a = ("1", "2", "3", "4", "5");  
  foreach($a as $k => $v)
  {
    if($v == 3)
   {
    array_unshift($a,$v);
    unset($a[$k]);
   } 
  }
  print_r($a);

到目前为止,有关标准的信息有限。