如何首先使用scandir对文件夹进行排序并使用usort [duplicate]

For a filemanagement, I use create_function to sort folders(directories) first and then files. But it seems that create_function is deprecated in php 7.2.

So how can I use the usort below correctly?

 $files = array_diff( scandir($dir), array(".", "..", "tmp") );

 usort ($files, create_function ('$a,$b', '
  return    is_dir ($a)
    ? (is_dir ($b) ? strnatcasecmp ($a, $b) : -1)
    : (is_dir ($b) ? 1 : (
        strcasecmp (pathinfo ($a, PATHINFO_EXTENSION), pathinfo ($b, PATHINFO_EXTENSION)) == 0
        ? strnatcasecmp ($a, $b)
        : strcasecmp (pathinfo ($a, PATHINFO_EXTENSION), pathinfo ($b, PATHINFO_EXTENSION))
    ))
  ;
'));
</div>

展开翻译

译文



此问题已经存在 这里有一个答案:</ p>





  • 如何在不使用create_function的情况下重写示例?

    1回答
    </ span>

    </ li>



  • PHP 7.2函数create_function()已弃用



    4 answers \ r
    </ span>

    </ li>

    </ ul>

    </ div>

    对于文件管理,我使用 create_function </ code>首先对文件夹(目录)进行排序,然后对文件进行排序 但似乎在PHP 7.2中不推荐使用 create_function </ code>。</ p>

    那么如何才能正确使用下面的 usort </ code>?</ p>

      $ files = array_diff(scandir($ dir),array(“。”,“..”,“tmp”)); 
    
    

    usort($ files,create_function(' $ a,$ b','
    返回is_dir($ a)
    ?(is_dir($ b)?strnatcasecmp($ a,$ b): - 1)
    :(is_dir($ b)?1: (
    strcasecmp(pathinfo($ a,PATHINFO_EXTENSION),pathinfo($ b,PATHINFO_EXTENSION))== 0
    ?strnatcasecmp($ a,$ b)
    :strcasecmp(pathinfo($ a,PATHINFO_EXTENSION),pathinfo( $ b,PATHINFO_EXTENSION))
    ))
    ;
    '));
    </ code> </ pre>
    </ div>

douyong1285
douyong1285 这很好用:usort($files,function($a,$b){returnis_dir($a)?(is_dir($b)?strnatcasecmp($a,$b):-1):(is_dir($b)?1:(strcasecmp(pathinfo($a,PATHINFO_EXTENSION),pathinfo($b,PATHINFO_EXTENSION))==0?strnatcasecmp($a,$b):strcasecmp(pathinfo($a,PATHINFO_EXTENSION),pathinfo($b,PATHINFO_EXTENSION))));});
6 个月之前 回复
doutangu4978
doutangu4978 您可以使用宇宙飞船运营商比较条件数组。这是一个例子:stackoverflow.com/a/56086562/2943403
6 个月之前 回复
douyuan4825
douyuan4825 php.net/manual/en/functions.anonymous.php
6 个月之前 回复
doupaoshu8334
doupaoshu8334 使用匿名函数而不是create_function。
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!