牛骨文教育服务平台(让学习变的简单)
博文笔记

php实现数组有规则排序筛选

创建时间:2017-03-16 投稿人: 浏览次数:186

今天给我个需求 要求我做出下面的效果(前后端都需要做),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");


foreach($exist_letters as $key => $letter){
            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 %}


效果图


声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。