У меня есть массив, содержащий ip-адреса и их соответствующую информацию о подсети. В первый раз, я должен добавить информацию подсети в мою базу данных, но я пытаюсь сделать это без каких-либо двух экземпляров, с этим кодомPHP unset array в нескольких foreach
#Note that this is pseudo-code
foreach ($subnets as $subnet)
{
$query = 'INSERT INTO subnets (field1, field2)
VALUES ($subnet['subnet'], $subnet['netmask']);'
$database->executeQuery($query);
$query = 'SELECT id FROM subnets
WHERE subnet = $subnet['subnet']
AND mask = $subnet['netmask'];'
$subnet_id = $database->getRow($query);
foreach ($subnets as $key => $subnet_check)
{
if (($subnet['subnet'] == $subnet_check['subnet']) AND ($subnet['netmask'] == $subnet_check['netmask']))
{
$ip_to_add = array_merge($ip_to_add,array(array("subnet_id" => $subnet_id[0], "ip" => $subnet['ip'], "name" => $subnet['name'])));
unset($subnets[$key]);
}
}
}
Первым Еогеасп добавит каждую подсеть и извлекать каждый из их идентификатора , Второй foreach сканирует каждую подсеть и попытается найти дубликат (включая его). Если это так, он должен добавить информацию об адресе ip-адреса в массив, а затем отключить этот элемент, поскольку мы не хотим повторно вставлять подсеть в другой цикл.
Однако, похоже, что это не похоже на правильное удаление, так как в конце вставляются все подсетей и IP-адреса (вставка всей подсети приносит много дубликатов).
Может ли кто-нибудь объяснить мне, почему unset не работает правильно? Это потому, что я нахожусь на уровне 2-го уровня?
спасибо.
Вы считаете отмену этого заказа? сначала проверьте базу данных и добавьте новые записи, если совпадений не найдено? вместо добавления, затем проверки, затем удаления – Dave