PHP最奇怪的功能

时间:2012-04-16 09:07:32

标签: php arrays usort

好吧,我正在尝试一些非常简单的事情。

这是:

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中解释的那样的课程(我甚至不需要任何课程,我试过用这个,这个,这个, “myclass”,但它根本不起作用):

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

3 个答案:

答案 0 :(得分:1)

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

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

usort($newarr, "cmp");

答案 1 :(得分: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版本?
  • 您是否使用名称空间?

答案 2 :(得分:0)

使用anonymous functions(或create_function)创建与cmp类似的匿名函数,然后将其传递给usort

示例:

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