PHP使用名称空间排序传递参数

bz4sfanl  于 2023-01-16  发布在  PHP
关注(0)|答案(1)|浏览(125)
namespace App\Controllers\Redis;

class getArray{
  public function sortArray(){
   $sortMe = Array
   (
    '05' => 100,
    '15' => 1,
    '24' => 10,
    '32' => 1000,
   );

   $sorted= Array
   (
    '0' => 1,
    '1' => 10,
    '2' => 100,
    '3' => 1000,
   );
   function cmp($a, $b) {
    //I need to get $sorted here
    return array_search($a, $sorted) - array_search($b, $sorted);
  }
  usort($sortMe , 'App\Controllers\Redis\cmp');//pass the $sorted parameter
}
}

我如何传递数组参数与命名空间,因为所有其他引用我发现没有命名空间,所以我迷路了。感谢任何建议。

    • 我尝试的:**
private $sorted = []; //declace a private var in the class

$this->sorted= Array
(
    '0' => 1,
    '1' => 10,
    '2' => 100,
    '3' => 1000,
);

function cmp($a, $b) {
  $sorted = $this->sorted;
  return array_search($a, $sorted) - array_search($b, $sorted);
}

但这将返回PHP错误:PHP致命错误:未捕获的错误:不在对象上下文中时使用$this

    • PHP编辑器链接:**

预期结果:www.example.comhttps://3v4l.org/gbbua#v7.0.14
我目前的计划:www.example.comhttps://3v4l.org/1Kmoq#v7.0.14

58wvjzkj

58wvjzkj1#

名称空间或类在这里几乎没有什么作用,您只需要一个anonymous callback

$sortMe = array(...);
$sorted = array(...);

usort($sortMe , function ($a, $b) use ($sorted) {
    return array_search($a, $sorted) - array_search($b, $sorted);
});

相关问题