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

来源:互联网 发布:ios同步请求数据 编辑:程序博客网 时间:2024/06/02 05:31

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


效果图


0 0
原创粉丝点击