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

时间:2015-07-22 13:39:07

标签: php

例如:

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

现在我想排在第3位,结果如下:

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

5 个答案:

答案 0 :(得分:1)

如果要对除1之外的所有数组进行排序,请尝试以下方法:

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')

答案 1 :(得分:0)

对于圈子移动使用:

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

<?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
)

答案 4 :(得分:0)

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

所以,关于标准的信息有限。