php实现数组有规则排序筛选
今天给我个需求 要求我做出下面的效果(前后端都需要做),symfony+twig+scss
由于使用api调数据时候api有问题,临时只能使用假数据了
$list_rep = array();$existing_letter = array();
$first_letter = "";
// fake data
$first_letter = strtoupper(substr("A saadxzcas", 0, 1));
$list_rep[$first_letter][$i]["id"] = ‘1’
$list_rep[$first_letter][$i]["name"] = ‘wewqewq’;
$list_rep[$first_letter][$i]["companyName"] = "A saadxzcas";
$list_rep[$first_letter][$i]["postion"] = "php";
$list_rep[$first_letter][$i]["emailAddress"] = "213w@qwd.com";
$list_rep[$first_letter][$i]["phoneNumber"] = "333333333333";
$existing_letter[] = $first_letter;
$first_letter = strtoupper(substr("altima", 0, 1));
$list_rep[$first_letter][2]["id"] = "2";
$list_rep[$first_letter][2]["name"] = "weimin li";
$list_rep[$first_letter][2]["companyName"] = "altima";
$list_rep[$first_letter][2]["postion"] = "asdd";
$list_rep[$first_letter][2]["emailAddress"] = "ttt@altima-agency.cn";
$list_rep[$first_letter][2]["phoneNumber"] = "11111111111";
$existing_letter[] = $first_letter;
$first_letter = strtoupper(substr("Bltima", 0, 1));
$list_rep[$first_letter][3]["id"] = "3";
$list_rep[$first_letter][3]["name"] = "asda li";
$list_rep[$first_letter][3]["companyName"] = "Bltima";
$list_rep[$first_letter][3]["postion"] = "adscxew";
$list_rep[$first_letter][3]["emailAddress"] = "test@altima-agency.cn";
$list_rep[$first_letter][3]["phoneNumber"] = "11111111111";
$existing_letter[] = $first_letter;
$first_letter = strtoupper(substr("Jltima", 0, 1));
$list_rep[$first_letter][4]["id"] = "4";
$list_rep[$first_letter][4]["name"] = "sds li==";
$list_rep[$first_letter][4]["companyName"] = "Jltima";
$list_rep[$first_letter][4]["postion"] = "sdaw";
$list_rep[$first_letter][4]["emailAddress"] = "toto@altima-agency.cn";
$list_rep[$first_letter][4]["phoneNumber"] = "11111111111";
$existing_letter[] = $first_letter;
//fake data end
$full_letters = range("A", "Z");
$exist_letters = range("A", "Z");
if(in_array($letter, $existing_letter)){
$list_rep[$letter]["total"] = count($list_rep[$letter]);
$half = $list_rep[$letter]["total"]/2;
$list_rep[$letter]["half"] = is_float($half) ? ceil($half) : "2";
} else {
unset($exist_letters[$key]);
}
}
ksort($list_rep);
// var_dump($list_rep);exit();
twig:
{% for key_letter, industry in final_list_companies %}
<div id="letter_{{key_letter}}" name="letter_{{key_letter}}" class="space-between-letter" ></div>
<div id="select_letter" class="letter-selection">
<p class="letter">{{key_letter}}</p>
{% set array_length = industry|length %}
{% set array_length_half = (industry|length / 2)|round %}
{% if array_length > 1 %}
<div class="row">
{% if is_mobile() %}
<div class="col-xs-12">
<ul class="membership-directory-industries membership-directory-industries-left">
{% for value in industry %}
<li class="membership_directory_industries_parents" name="{{value.first_letter_code|capitalize}}">
<a href="{{ path("membership_directory_company_additional_show", {"company": value.id}) }}">{{ value.name }}</a>
</li>
{% endfor %}
</ul>
</div>
{% else %}
<div class="col-xs-{{ is_mobile() ? "12" : "5" }}">
<ul class="membership-directory-industries membership-directory-industries-left">
{% for value in industry|slice(0, array_length_half) %}
<li class="membership_directory_industries_parents" name="{{value.first_letter_code|capitalize}}">
<a href="{{ path("membership_directory_company_additional_show", {"company": value.id}) }}">{{ value.name }}</a>
</li>
{% endfor %}
</ul>
</div>
<div class="col-xs-{{ is_mobile() ? "12" : "6" }}">
<ul class="membership-directory-industries membership-directory-industries-right">
{% for value in industry|slice(array_length_half, array_length-array_length_half) %}
<li class="membership_directory_industries_parents" name="{{value.first_letter_code|capitalize}}">
<a href="{{ path("membership_directory_company_additional_show", {"company": value.id}) }}">{{ value.name }}</a>
</li>
{% endfor %}
</ul>
</div>
{% endif %}
</div>
{% else %}
<div class="row">
<div class="col-xs-{{ is_mobile() ? "12" : "6" }}">
<ul class="membership-directory-industries membership-directory-industries-left">
{% for value in industry|slice(0, 1) %}
<li class="membership_directory_industries_parents" name="{{value.first_letter_code|capitalize}}">
<a href="{{ path("membership_directory_company_additional_show", {"company": value.id}) }}">{{ value.name }}</a>
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
</div>
{% endfor %}
效果图
- 上一篇: PHP数组排序array_multisort函数详解
- 下一篇: python读取txt文件中的数组