簡體   English   中英

Usort已棄用create_function

[英]Usort with deprecated create_function

我的案件與其他案件相似,嘗試了他們的建議,但對我沒有用。

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顯示隨機文件。

為什么不能使用閉包

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM