Я обновляю упаковочный экран в нашей системе инвентаризации. Пользователь открывает пакет и вставляет / удаляет элементы в нем, и когда он нажимает кнопку Сохранить, массив json всех частей пакета отправляется конечной точке PHP, которая заботится о сохранении пакета в базе данных.
Пока все хорошо, я создал свои функции для передачи данных между PHP и javascript. Однако, хотя массив json, который javascript отправляет в PHP, содержит всю информацию о продуктах (так как javascript необходим для его извлечения, чтобы заполнить сетку в графическом интерфейсе), мне все равно нужно проверить все в PHP, потому что я не могу убедитесь, что пользователь не вмешивался в данные с консоли, прежде чем пытаться сохранить.
С учетом сказанного в PHP я получаю массив json, который я использую по идентификаторам, чтобы загрузить список подходящих объектов в массив. Я делаю это:
$in = str_repeat('?,', count($itemIDs) - 1) . '?';
$sql = "SELECT * FROM tbProduct WHERE nID IN ($in)";
$sttmt = $db->prepare($sql);
$sttmt->execute($itemIDs);
$res = $sttmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($res as $key => $productInfo) {
$prod = new tbProduct($db);
$prod->loadFromArray($productInfo);
}
пока все хорошо, у меня теперь есть массив tbProduct, который является моим классом для продуктов.
Что мне теперь нужно сделать, так это запустить проверку этого массива объектов, чтобы убедиться, что все эти объекты находятся в надлежащем состоянии для упаковки вместе. Эти проверки включают в себя проверку того, что все продукты имеют одинаковый статус, что ни один из продуктов не является сборочными деталями, что все продукты имеют одного владельца и т. Д. Таким образом, даже если массив был изменен в консоли браузера, я ' в любом случае обязательно буду использовать информацию из БД.
Так что мне нужен способ проверить это. Я мог бы просто сделать foreach, сохранить все, что нужно проверить с самого первого элемента в переменных, и просто сравнить каждый последующий элемент с этими переменными, но я уверен, что есть лучшие способы сделать это. Мне нужно что-то, что будет максимально эффективно. Мои пакеты могут (и будут) содержать несколько сотен продуктов, поэтому решение должно быть быстрым.
Каков наилучший способ сделать это?
Спасибо!