用PHP实现的最奇怪的函数
好吧,我正在尝试一些非常简单的方法 这是:用PHP实现的最奇怪的函数,php,arrays,usort,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 我在这里读到了这个答案 但这对我来说没有任何意义,我没有一
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
我在这里读到了这个答案 但这对我来说没有任何意义,我没有一个像答案1中解释的那样的类(我甚至不需要任何类,我尝试了$this,this,而不是“myclass”,但它根本不起作用): 使用(或
create_函数
)创建一个匿名函数,如cmp
,然后将其传递给usort
例如:
usort($newarr, function($a, $b) {
return 0;
});
更改脚本流,当您尝试对数组进行排序时,
cmp
还不存在。因此,这应该是可行的:
function cmp($a, $b)
{ return 0; }
usort($newarr, "cmp");
从您发布的问题信息中,无法明确说明为什么它不适合您 代码通常是有效的,它是完全正确的():
我想不起来这是否是问题所在,但尝试将函数包含在usort上方而不是下方。对usort()
的调用是否与cmp
在同一范围内?如果是,是否在类中定义了cmp
?在代码中调用usort()
之前,请尝试放置排序函数定义。@enrico:您的代码应该工作正常。你使用的是哪一个PHP版本,你发布的正是你所拥有的代码?事实上,反过来也是如此,那么为什么要改变它呢?真的吗?怎么会这样?PHP有一个水晶球来确定后面定义的函数是否存在?:)我不敢相信,我改变了顺序,它不再给我一个错误了_o@J0HN-不需要水晶球。PHP解析文件,然后执行它。它不是逐行解析和执行的。@PaulDixon,也许我是从Parralel universe写的,也许我没有得到什么,也许我弄错了,但PHP总是抱怨未定义的函数。你能在一些文档页面上指出我错了吗?比create\u function
@hakre更好使用它取决于PHP版本。如果在共享主机上,它可能没有PHP5.3,但这也是一个选项。
function cmp($a, $b)
{ return 0; }
usort($newarr, "cmp");
<?php
$newarr = array();
if (!function_exists('cmp')) echo "cmp() not defined yet.\n";
usort($newarr, "cmp");
function cmp($a, $b)
{ return 0; }