gpt4 book ai didi

php - 带有命名空间的 Uasort 不起作用

转载 作者:行者123 更新时间:2023-12-04 17:06:47 25 4
gpt4 key购买 nike

不幸的是,我在使用 uasort 时遇到问题(或任何需要回调函数的函数)在命名空间中。

在这个脚本中,我没有使用任何类(因此没有 OOP)。

我没有想出任何解决方案(用回调函数声明命名空间没有帮助)。

我总是收到错误(或者更确切地说是通知):PHP Warning: uasort() expects parameter 2 to be a valid callback,[...]
那是我的(简化)代码:

<?php namespace Wire;
include("../index.php");

$test[0] = "Test1";
$test[1] = "Test2";
$test[2] = "Test3";

function selfsort($a,$b){
$stats["Test1"] = 5;
$stats["Test2"] = 6;
$stats["Test3"] = 0;
if ($stats[$a]==$stats[$b]) return 0;
return ($stats[$a]<$stats[$b])?-1:1;
}

function getPrio($arr){
uasort($arr, 'selfsort');
//usort($arr, array(__NAMESPACE__, 'selfsort')); //doesn't work either:
return $arr;
}

//returns PHP Warning: uasort() expects parameter 2 to be a valid callback, function 'selfsort' not found or invalid function name in...
print_r(getPrio($test));

是否有任何可能的方式声明我想使用 uasort具有该特定功能或任何其他解决方法?

最佳答案

这是一个相当愚蠢的问题,但是对于任何提出这个问题并搜索数小时的人来说,我从 PHP 手册注释部分找到了可调用对象的答案。

那里说:

When trying to make a callable from a function name located in a namespace, you MUST give the fully qualified function name (regardless of the current namespace or use statements).



Link to PHP manual comment section

对于我的特定问题,答案应该是:
uasort($arr, 'Wire\selfsort');

关于php - 带有命名空间的 Uasort 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49100874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com