Как я могу отфильтровать мой массив по элементам, которые присутствуют в другом массиве - PullRequest
0 голосов
/ 05 апреля 2019

Мне нужно отфильтровать мой массив по элементам, присутствующим в другом массиве.

Более подробно, у меня в контроллере две переменные (массивы): одна содержит ВСЕХ пользователей, другая - пользователей, которые участвовали в оценке.Что мне нужно, так это третья переменная / или список в ветке (массив), который будет содержать ВСЕ ОТДЫХ - так что я могу выбрать их из выпадающего списка для каждой оценки (имена, которые уже находятся в оценке, не будут отображаться ввыпадающий список).

Мне интересно, каков наилучший подход для этого .. Должен ли я сделать это в ветке или в контроллере?

Спасибо!

веточка:

<select name="user" >
   {% for user in users %}
      <option value="{{ user.idUser }}" label="{{ user.name }} ">  
   {% endfor %}
</select>

контроллер:

    $evals = $this
        ->getDoctrine()
        ->getRepository(User::class)
        ->findUserGroups();             // this is my own function (based on SQL query) from repository that searches for those who participated in evaluation

    $users = $this
        ->getDoctrine()
        ->getRepository(User::class)
        ->findAll();                    //this is a variable that contains ALL users (including those who already participated in evaluation)

1 Ответ

0 голосов
/ 06 апреля 2019

Это лучше всего обрабатывать в контроллере, и вы можете использовать php's array_diff для этого.

controller:

$evals = $this
    ->getDoctrine()
    ->getRepository(User::class)
    ->findUserGroups();

$users = $this
    ->getDoctrine()
    ->getRepository(User::class)
    ->findAll();

$non_evals = array_diff($users, $evals);

, затем в ветке:

<select name="user" >
   {% for user in non_evals %}
      <option value="{{ user.idUser }}" label="{{ user.name }} ">  
   {% endfor %}
</select>
...