PHP将多维数组排序为分类的html列表


PHP sorting a multidimensional array into a cetegorized html list

我的数组是一个国家列表,确切地说是国家代码。

$nazioni = array(
    'all' => array(
        'ad','ae','af','ag','al','am','ao','ar','at','au','az','ba','bb','bd',
        'be','bf', etc... ...'zw',
    ),
    'europa' => array(
        'ad','al','am','at','az','ba','be','bg','by','ch','cy','cz','de','dk',
        'ee','es','fi','fr','gb','ge','gr','hr','hu','ie','is','it','kz','li',
        'lt','lu','lv','mc','md','me','mk','mt','nl','no','pl','pt','ro','rs',
        'ru','se','si','sk','sm','tr','ua','va',
    ),
    'asia' => array(
        'ae','af','am','az','bd','bh','bt','bn','cn','cy','ge','id','il','in',
        'iq','ir','jo','jp','kg','kh','kp','kr','kw','kz','la','lb','lk','mm',
        'mn','mv','my','np','om','ph','pk','ps','qa','ru','sa','sg','sy','th',
        'tj','tl','tm','tr','uz','vn','ye',
    ),
etc...

这个包含大陆的列表还将包含地中海或中东等地区,这意味着这些值将在类别中重复。甚至基本的亚洲和欧洲类别也将包含重复的值,我将使用每个值创建一个链接。

我非常灵活地重新安排我的数组是如何放置的,但它甚至可能采取这样一个列表,并使一个分类排列的列表没有重复值的开销?还是这个开销很小,这不是问题?

目前我使用一个基本的foreach循环来安排它,如下所示:

    echo '<li>'.Lang::line('nations.europa')->get().'</li>';
    foreach($nazioni['europa'] as $n) {
        echo '<li>'.Filtra::uri(Lang::line('nations.'.$n)->get(), $uri, 1, $n).'</li>';
    }

Filtra::uri函数创建了一个链接,我使用Laravel框架中的Lang::line函数根据键值查找国家。基本.

我最后想要的是一个分类的链接列表。设计还没有完成,但到目前为止返回的HTML看起来有点像这样,我将把这些类别包装起来,以便在稍后的阶段使其更具交互性。也许可以使用DL, DT和DD标签,或者制作一个选项列表,但这不是重点。

<li>Europe</li>
<li><a href="http://example.ex/en/+Andorra">Andorra</a></li>
and same for all Europe countries...
<li>Asia</li>
<li><a href="http://example.ex/en/+United+Arab+Emirates">United Arab Emirates</a></li>
and same for all Asian countries......

是否有可能获取这样一个列表,并在没有重复值的开销的情况下创建一个分类排列的列表?还是这个开销很小,这不是问题?

开销非常小——在阅读你的代码时,做一些让其他人(或将来的你)更清晰、更容易理解的事情