【问题标题】:Usort with deprecated create_function使用已弃用的 create_function 进行排序
【发布时间】:2020-01-12 23:55:18
【问题描述】:

我的情况与其他人相似,尝试了他们的建议,但对我不起作用。

usort($file, create_function('$a,$b', 'return filemtime($a)<filemtime($b);'));

代码代表我们客户端仪表板中的 pdf 显示(随机 pdf 显示),以便他们能够下载。但是,我尝试将它们转换为本机函数,但 pdf 显示仅显示上传的 pdf 文件的最后。

usort($file, function($a, $b) {
   return filemtime($a) < filemtime($b);
} );

这是上面的代码,我尝试将create_function 更改为function(),但它不会改变显示。

我不拥有此代码。它被分配给我来修复它。

更新: 如果您需要完整的代码,就在这里。

if($newDIR != "" && is_dir($newDIR)) {

    $file = File::allFiles($newDIR);

    usort($file, create_function('$a,$b', 'return filemtime($a)<filemtime($b);'));

    foreach($file as $files) {
        $fileInfo = pathinfo($files);

        $name = $fileInfo['filename'];

        $size = File::size($files);
        $datemodiy = File::lastModified($files);
        $size = $size/1048576;
        $fileLink = str_replace('\\', '/', $fileInfo['dirname']).'/'.$fileInfo['basename'];
        $folderLink= str_replace('documents/','',$mainDIR);

        $date2 = date('Y-m-d',$datemodiy);
        $dateno = date('Y-m-d');
        $intervalDate = (int)abs((strtotime($dateno) - strtotime($date2))/(60*60*24*30));

        if($intervalDate <= 2) {
            $fileDir[] = array('link'=>$fileLink,'name'=>$name,'size'=>$size,'datemodiy'=>$datemodiy,'folderLink'=>$folderLink);
        }
    } // end for each

} // if $dir

更新:

上面我用来替换旧的create_function 的代码没问题...并且工作正常。我之所以持怀疑态度,只是因为我一次下载了所有文件,而不是手动逐个下载不同的文件。我现在看到每个 pdf 都显示随机文件。

【问题讨论】:

  • 这是上面的代码,但它不会改变显示 - 你能解释一下你的意思吗?
  • 我更新了我的问题并包含了整个代码。
  • @iMarkDesigns 你解决了这个问题吗?或任何更新?
  • @PrafullaKumarSahu 我注意到代码在我将其更改为function(){}后运行良好...
  • @iMarkDesigns 所以为你做一个更紧密的工作,这是我的第一个建议?

标签: php laravel laravel-4


【解决方案1】:

为什么不能使用闭包

usort($file, function($a, $b){
    return filemtime($a)<filemtime($b);
});

或者是函数create_function,但在这种情况下,您可以在帮助程序中创建一个函数并使其工作,该函数的定义将类似于

$str = '$a,$b';
$code = "return filemtime($a)<filemtime($b);";

var_dump(createFunction($str, $code));

function createFunction($str, $code) {
    $code;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多