CakePHP 3.8:如何在控制器中使用 uasort()

我正在尝试在 CakePHP 控制器中使用uasort()函数。


我有一个 txt 文件,每行包含一个文件名。文件名的格式为 SOME_TEXT_YY.MM.DD_HH-MM_SOME_TEXT 我想在给定日期之后对文件进行排序并再次保存它们因此我编写了这段 php 代码,它使用普通 php 可以正常工作:


<?

// compare function

function cmp($a, $b) {

    $a1 = explode('-', $a);

    $a2 = explode('S', $a1[1]);

    $ac = substr($a1[0], -11,11).$a2[0];

    $b1 = explode('-', $b);

    $b2 = explode('S', $b1[1]);

    $bc = substr($b1[0], -11,11).$b2[0];

    if ($ac == $bc) {

        return 0;

    }

    return ($ac < $bc) ? -1 : 1;

}

$files = file("files.txt");


uasort($files, 'cmp');


file_put_contents('sorted.txt', $files);


foreach ($files as $line) {

    echo $line."</br>";

}

?>

当我试图在 CakePHP 的控制器函数中运行它时,它不知何故不起作用。我认为这是因为“嵌套”功能。有人知道如何让它在控制器内部工作吗?


芜湖不芜
浏览 88回答 1
1回答

汪汪一只猫

虽然@El_Vanja 的建议可行,但在您需要在多个控制器操作中重复使用相同功能的情况下,它并不理想。根据callables 上的文档,“实例化对象的方法作为数组传递,该数组包含索引 0 处的对象和索引 1 处的方法名称”。所以,你可以用uasort($otrkeys, [$this, 'cmp']);.
打开App,查看更多内容
随时随地看视频慕课网APP