按字母顺序组织数组输出


Organise Array output alphabetically

我已经尝试了多种方法但没有成功,无论如何我可以组织以下内容以使结果按字母顺序排列吗?

<?php
    $datas = array_slice($facilities, 0, $leftoshownumber);
    foreach($datas as $data) {
        if(in_array ($data->Name,$removedouble)) continue; 
        echo '<div class="checkmark-33"><div class="fa-stack fa-1x checkmark-icon"><i class="fa fa-circle fa-stack-2x icon-background"></i><i class="fa fa-check fa-stack-1x icon-text"></i></div><div class="checkmark-inner">'. $data->Name .'</div></div>'; 
    }; 
?> 

任何帮助都会很棒,谢谢!

在代码中,$datas是一个对象数组,每个单独的$data对象都包含一个"Name"字段。因此,您需要根据每个$data->Name字段的值按字母顺序对$datas数组进行排序。如问题按对象字段对对象数组进行排序中所述,这可以使用 usort 完成:

<?php
    function cmp($a, $b) {
        return strcmp($a->Name, $b->Name);
    }
    $datas = array_slice($facilities, 0, $leftoshownumber);
    usort($datas, "cmp");
    foreach($datas as $data) {
        if(in_array ($data->Name,$removedouble)) continue; 
            echo '<div class="checkmark-33"><div class="fa-stack fa-1x checkmark-icon"><i class="fa fa-circle fa-stack-2x icon-background"></i><i class="fa fa-check fa-stack-1x icon-text"></i></div><div class="checkmark-inner">'. $data->Name .'</div></div>'; 
    }; 
?> 

您可以使用用户定义的排序,usort:

<?php 
    function cmp($a, $b){ // User defined sorting algorithm
        if ($a == $b)
            return 0;
        return ($a['name'] < $b['name']) ? -1 : 1;
    }
    $datas = array_slice($facilities, 0, $leftoshownumber);
    usort($datas, "cmp"); // use the function cmp() to do sorting comparison 
    foreach($datas as $data) {
        if(in_array ($data->Name,$removedouble)) continue; 
            echo '<div class="checkmark-33"><div class="fa-stack fa-1x checkmark-icon"><i class="fa fa-circle fa-stack-2x icon-background"></i><i class="fa fa-check fa-stack-1x icon-text"></i></div><div class="checkmark-inner">'. $data->Name .'</div></div>'; 
    }; 
?>