deadloop
@deadloop
Активно осваиваю PHP

Как перебрать массив и выбранным элментам присвоить одно значение и не выбраным другое?

У Меня есть таблицы из 5 элементов (будет менятся динамически). У меня есть контролер, в котром я провожу сравнение in_array(), приходит реквест с масивом с id (1,3,4) если в масиве эти id есть то провожу присваивание данных. Как мне присвоить оставшимся данным другие значения. Пример: в массиве содежрутся id (1,2,3,4,5) я проверяю содержутся ли id и реквеста (1,3,4) если содержутся то выпонляется условие. Оставшимся данным (2,5) я присваиваю другое значение.

Как в else $categoryId положить оставшиеся данные?
foreach($request->category as $categoryId => $roles){
            if(in_array($categoryId, $categories))

                Category::find($categoryId)->roles()->sync($roles);
            else
                Category::find($categoryId)->roles()->sync([]);
        }
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Итерируйте по всем категориям, имеющимся в БД и для каждой из них синхронизируйте либо пришедшие с запросом идентификаторы, либо пустой массив.

$input = $request->get('category', []);

foreach (Category::all() as $category) {
    $category->roles()->sync(Arr::get($input, $category->id, []));
}


Старайтесь рассуждать о задаче для начала простым человеческим языком, тогда решение зачастую будет становиться очевидным. А потом уже его превращать в in_array(), foreach и так далее.
Ну и терминология важна, я уже вам об этом говорил. Слова "значения", "данные", "реквест" слишком общие и в них легко запутаться. Если бы я не видел ваши предыдущие вопросы, я бы в этом ничего не понял.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
23 апр. 2024, в 16:55
10000 руб./за проект
23 апр. 2024, в 16:10
1500 руб./в час
23 апр. 2024, в 16:05
3000 руб./за проект