如何检查数组是否已经在php中排序

Muh*_*eel 3 php arrays

我在php中有一个小任务。我有一个简单的数组。

Array
(
    [0] => 50
    [1] => 100
    [2] => 150

)
Run Code Online (Sandbox Code Playgroud)

是否有一个PHP内置函数可供我使用,以便它可以返回true或false,因此,如果数组已经排序或没有排序,或者对此的任何其他php脚本,没有循环。我知道使用循环和条件很容易。

hsz*_*hsz 5

如果输入数组相等,则可以将其与排序后的数组进行比较。

$input  = array(50, 100, 150);
$sorted = array_values($input);
sort($sorted);

if ( $input === $sorted ) {
  // input array was already sorted
}
Run Code Online (Sandbox Code Playgroud)


pri*_*wig 5

function arraySorted($array) {
    $a = $array;
    $b = $array;
    sort($b);
    if ($a == $b){
        return true;
    } else {
        return false;
    }
}

//test for [0],[3],[2]
$input  = array(0 => 250,
                3 => 100,
                2 => 150);
var_dump($input);
echo "<br />";
//array(3) { [0]=> int(250) [3]=> int(100) [2]=> int(150) }

var_dump(arraySorted($input));
echo "<br />";
//bool(false) 

//test for [0],[1],[2]
$input  = array(0 => 250,
                1 => 100,
                2 => 150);
var_dump($input);
echo "<br />";
//array(3) { [0]=> int(250) [1]=> int(100) [2]=> int(150) }

var_dump(arraySorted($input));
echo "<br />";
//bool(false)

//test for [0],[3],[2] and asc values
$input  = array(0 => 50,
                1 => 100,
                2 => 150);
var_dump($input);
echo "<br />";
//array(3) { [0]=> int(50) [1]=> int(100) [2]=> int(150) }

var_dump(arraySorted($input));
echo "<br />";
//bool(true)
Run Code Online (Sandbox Code Playgroud)


Mih*_*att 0

在这里,您可以尝试使用以下代码:

<?php

$sort = array(
    0 => 50,
    1 => 100,
    2 => 150
);

$default = $sort;
sort($sort);

$flag = true;
foreach($sort as $key=>$value)
    if($value!=$default[$key])
        $flag = false;  

if($flag)
    echo "Already sorted";  
else
    echo "Not Already sorted";  
?>
Run Code Online (Sandbox Code Playgroud)

  • 这看起来很像一个循环。:) (8认同)