1

好吧,我正在尝试一些应该非常简单的东西。

这里是:

usort($newarr, "cmp");

function cmp($a, $b)
{ return 0; }

问题很简单:它不会通过给出这个警告信息对数组进行排序

Warning: usort() expects parameter 2 to be a valid callback, function 'cmp' not found or invalid function name

我在这里阅读了这个答案PHP usort won't sort

但这对我来说没有任何意义,我没有像答案 1 中解释的那样的课程(而且我什至不需要任何课程,我尝试使用 $this,this,insted of "myclass"但它根本不起作用):

usort($items, array("MyClass", "compare_method"));
4

3 回答 3

1

更改脚本流程,当您尝试对数组进行排序时,您的数组cmp尚不存在。所以,这应该工作:

function cmp($a, $b)
{ return 0; }

usort($newarr, "cmp");
于 2012-04-16T09:12:04.520 回答
1

从您随问题发布的信息中,无法具体说明为什么它对您不起作用。

代码通常可以工作,完全没问题(Demo):

<?php
$newarr = array();

if (!function_exists('cmp')) echo "cmp() not defined yet.\n";
usort($newarr, "cmp");

function cmp($a, $b)
{ return 0; }

我建议您在问题中添加更多信息,以便更好地说明实际问题所在的位置。

  • 您使用的是哪个 PHP 版本?
  • 你使用命名空间吗?
于 2012-04-16T09:17:57.697 回答
0

使用匿名函数(或create_function)创建一个像你一样的匿名函数cmp,然后将它传递给usort.

例子:

usort($newarr, function($a, $b) {
    return 0;
});
于 2012-04-16T09:10:46.310 回答