Проверка того, содержит ли массив тот же ключ и значение, что и другой массив, который повторяется. Переполнение стека

Прежде всего, фреймворк, который я использую — это Laravel 5.3

Я пытаюсь найти способ минимизировать количество запросов в моем приложении. Я работаю над веб-панелью управления ресторана, в представлении, которое я должен отредактировать список блюд из соответствующих категорий, назначенных для ежедневное специальное меню. Предварительный просмотр представлен ниже:

введите описание изображения здесь

У меня есть два запроса, которые после некоторой работы над их результатами генерируют каждый отдельный массив.

Первый массив с именем: $selectable_categories_and_dishes
возвращает массив всех категорий и блюд в базе данных (включая категории и соответствующие блюда, которые уже выбраны).

Объекты и структура массива:

{
"id_category":4,
"category_name":"Contorno ",
"dishes":[
{
"id":15,
"price":"10",
"name":"Patate al Forno"},
{
"id":16,
"price":
"8","name":"Verdure alla Griglia"},
{
"id":17,
"price":"8",
"name":"Insalata Mista"}
],
}

Второй массив с именем: $selected_categories_and_dishes
возвращает массив всех категорий и блюд, которые были выбраны, когда ежедневное специальное меню было создано в первую очередь.
Объекты и структура массива:

{
"id_category":4,
"category_name":"Contorno ",
"dishes":[
{
"id":15,
"price":"10",
"name":"Patate al Forno",
"id_pcm":"4"},
{
"id":16,
"price":"8",
"name":"Verdure alla Griglia",
"id_pcm":"4"},
{
"id":17,
"price":"8",
"name":"Insalata Mista",
"id_pcm":"4"}
],
}

То, что я не могу понять, — это способ объединения этих массивов таким образом, чтобы при циклическом объединении массива все выбранные блюда проверялись.

Кто-нибудь есть какие-либо идеи, как этого добиться. Любой ответ приветствуется.
Заранее спасибо.

редактировать:

Способ, которым я генерирую этот идентификатор массива следующим образом:

 $menu_categories = DB::select('SELECT id , name FROM `packages_menu_categories` WHERE visible = "yes" AND `delete` = "no"');
$selectable_categories_and_dishes = array();
foreach ($menu_categories as $menu_category)
{
$dishes =  DB::select('SELECT d.id , d.price , d.name FROM `package_menu_categories_dishes` p LEFT JOIN `dishes` d ON p.id_dish = d.id WHERE p.visible = "yes" AND p.delete = "no" AND p.id_package_menu_category ='.$menu_category->id);
$object=
[
'id_category' => $menu_category->id,
'category_name' =>$menu_category->name,
'dishes' => $dishes
];

array_push($selectable_categories_and_dishes,$object);
}

$selected_categories = DB::select('SELECT c.id as id_category , c.name as category_name FROM sub_packages_dishes s LEFT JOIN packages_menu_categories c ON s.id_package_menu_category = c.id WHERE s.id_sub_package = '.$id.' GROUP BY s.id_package_menu_category');
$dishes_and_categories  = array();
foreach ($selected_categories as $selected_category)
{
$dishes =  DB::select('SELECT s.id AS id_pmcd , d.id , d.name FROM `sub_packages_dishes` s LEFT JOIN `dishes` d ON s.id_dish = d.id WHERE s.id_sub_package ='.$id.' AND s.id_package_menu_category ='.$selected_category->id_category);
$object=
[
'id_category' => $selected_category->id_category,
'category_name' =>$selected_category->category_name,
'dishes' => $dishes
];
array_push($dishes_and_categories,$object);
}

0

Решение

Я предполагаю, что вы можете контролировать структуру массива: сделать блюда ассоциативным массивом, а ключ — идентификатором блюда. Затем, когда вы зацикливаетесь, убедитесь, что тот, на котором вы находитесь, существует в выбранном

По сути это будет структура:

{
"id_category":4,
"category_name":"Contorno ",
"dishes":{
15 => {
"price":"10",
"name":"Patate al Forno",
"id_pcm":"4"},
16 => {
"price":"8",
"name":"Verdure alla Griglia",
"id_pcm":"4"}
...
}

Тогда, когда вы зацикливаете свой массив, это так же просто, как. Это не может быть на 100%, но все понятно.

foreach($selectable_categories_and_dishes as $key => $values){
if(isset($selected_categories['dishes'][$key])){
//This is selected so check the box.
}
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector