【问题标题】:Explaining usort() in detail详细解释 usort()
【发布时间】:2018-08-30 02:25:57
【问题描述】:

您好,我目前正在尝试了解我创建的函数“cmp()”如何与函数 usort() 一起工作。我似乎无法理解逻辑。谁能帮帮我?

<?php
function cmp($a, $b) {
        echo "Iteration: " . $a . " > " . $b;
        if($a<$b)
        {
            echo " FALSE <br>";
        }
        elseif($a>$b)
        {
            echo " TRUE <br>";
        }
        else
        {
            echo " ??? <br>";   
        }
    if ($a == $b) {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

// Array to be sorted
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4);
echo "<pre>";
print_r($array);
echo "</pre>";

// Sort and print the resulting array
echo "<pre>";
uasort($array, 'cmp');
echo "<br>";
print_r($array);
echo "</pre>";
?>

【问题讨论】:

  • 据我所知,此代码运行良好,您的 cmp() 函数每次都会生成调试信息。你到底在问什么?
  • 迭代的顺序。这就是我一直想知道的。
  • 你的意思是你想知道它使用的算法吗?我很确定所有的 PHP 排序都使用 Quicksort。
  • 返回 1 或返回 -1 的含义
  • 您的 cmp() 函数不会返回 true/false。抱歉,我听不懂。

标签: php arrays function sorting usort


【解决方案1】:

您的 cmp 函数不进行排序。它只是告诉 usort 一个值是否小于、等于或大于另一个值。 usort() 函数使用用户定义的比较函数对数组进行排序。

【讨论】:

    猜你喜欢
    • 2019-09-08
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 2023-03-12
    • 2021-09-03
    相关资源
    最近更新 更多