Как правильно перебрать массив и записать данные?
Ребят доброго утра Всем. Такой вопрос Принимаю склады и товары через input stringом пример(склад 1,склад 2,склад 3), Делаю explode, перебираю через foreach, затем к этим складам добавляю продукты. Такой вопрос если склад уже существует то как мне продукты добавить уже на существующий склад, а не добавлять дубликат склада и вешать на него товары? Сразу прошу прощение за табуляцию кода, писал его прям тут в редакторе. =) Спасибо за помощь
$sklads = 'склад 1, склад 2';
$skladsArr = explode(',', $sklads );
$products = 'product 1, product 2';
$productsArr = explode(',', $products );
foreach($sklads as $sklad){
$Sklad = new Sklad()
$Sklad ->name = $sklad;
$Sklad ->save()}
foreach($products as $product){
$Product= new Product();
$Product->sklad_id = $Sklad->id;
$Product->name = $product;
$Product->save()
}
Ответы (1 шт):
Автор решения: phpBear
→ Ссылка
При условии, что массивы складов и товаров у Вас не будут огромными, я бы предложил такое решение.
$sklads = 'склад 1, склад 2';
$skladsArr = explode(',', $sklads );
$products = 'product 1, product 2';
$productsArr = explode(',', $products );
//Заводим еще один массив
$skladsAndProductsArr = [];
foreach( $skladsArr as $sklad ) {
foreach( $productsArr as $product ) {
//В котором ключом будет название склада, а значением массив с товарами этого склада ["склад 1"] => ["product1", "product2"]
$skladsAndProductsArr[trim($sklad)][] = trim($product);
}
}
//Проходим этот массив
foreach( $outArray as $sklad => $products ) {
//На каждый его элемент-ключ заводим ОДИН раз объект Sklad
$Sklad = new Sklad()
$Sklad ->name = $sklad;
$Sklad ->save();
//Проходим массив товаров
foreach( $products as $product ) {
//Сохраняем каждый товар в склад созданный в родительском цикле
$Product= new Product();
$Product->sklad_id = $Sklad->id;
$Product->name = $product;
$Product->save()
}
}