Pausar ejecución de foreach имеет к que конечным остановкам otro

Tengo сценарий ООН море que comprueba si existen unos datos en mysql y si no existen los inserta o borra según necesario.

esta hecho подставляют DOS foreach. el карточная игра comprueba шаг скрутки СИ datos nuevos en el formulario que no estén en mysql y si los hay los inserta, Эль-Сегундо comprueba шаг скрутки СИ datos en mysql que ya никакой estén en el formulario y si los hay los borra.

СИ сабли el caso es que al ejecutarse todo de una vez siempre borra y quisiera existe alguna форма de pausar la ejecución del codigo o никакой ejecutarlo не имеет к que никаких конечных остановок el цикл краткой информации.

el código que uso es este:

$UpTallicolor = CartesianProduct(array('tallas'=> $_POST['tallas'], 'color'=> $_POST['colores']));
foreach($UpTallicolor as $DUptallicolor) {
    $CExisteArt = Consulta_Dinamica("Simple","*","Codigos","`que` = 'Codigo' AND `idcosa` = '".$_POST["nuevo"]."' AND `1`='".$DUptallicolor['tallas']."' AND `2`='".$DUptallicolor['color']."' ");
    if (!$CExisteArt) {   //si no existe ese articulo en los codigos
       $UpTallicolor = Insertar_Datos("Codigos" , "`que`,`idcosa`,`1`,`2`" , "'Codigo','".$_POST["nuevo"]."','".$DUptallicolor['tallas']."','".$DUptallicolor['color']."' "); 
    }
} //cierro el foreach

$QuenoHay = []; 
$Quehay = Consulta_Dinamica("Array","*","Codigos","`que` = 'Codigo' AND `idcosa` = '".$_POST["nuevo"]."' ");
foreach($UpTallicolor as $DUpColorTalli) {
    $QuenoHay[] = Consulta_Dinamica("Simple","*","Codigos","`que` = 'Codigo' AND `idcosa` = '".$_POST["nuevo"]."' AND `1`='".$DUpColorTalli['tallas']."' AND `2`='".$DUpColorTalli['color']."' ");
}

$Diferencia = array_diff_assoc($Quehay,$QuenoHay);
foreach($Diferencia as $BorrarCod) {
    $BorrarCodigos = Borrar_Datos("Codigos" , "id","".$BorrarCod["id"]."");
}
0
задан 11.01.2017, 20:03
0 ответов

Сначала, мы можем "оптимизировать" немного этот код снимая дополнительный foreach.

$QuenoHay = []; 
$UpTallicolor = CartesianProduct(array('tallas'=> $_POST['tallas'], 'color'=> $_POST['colores']));
foreach($UpTallicolor as $DUptallicolor) {    
  $CExisteArt = Consulta_Dinamica("Simple","*","Codigos","`que` = 'Codigo' AND `idcosa` = '".$_POST["nuevo"]."' AND `1`='".$DUptallicolor['tallas']."' AND `2`='".$DUptallicolor['color']."' ");
  if (!$CExisteArt) {   //si no existe ese articulo en los codigos
    $UpTallicolor = Insertar_Datos("Codigos" , "`que`,`idcosa`,`1`,`2`" , "'Codigo','".$_POST["nuevo"]."','".$DUptallicolor['tallas']."','".$DUptallicolor['color']."' "); 
  }    
  $QuenoHay[] = Consulta_Dinamica("Simple","*","Codigos","`que` = 'Codigo' AND `idcosa` = '".$_POST["nuevo"]."' AND `1`='".$DUpColorTalli['tallas']."' AND `2`='".$DUpColorTalli['color']."' ");
} //cierro el foreach

$Quehay = Consulta_Dinamica("Array","*","Codigos","`que` = 'Codigo' AND `idcosa` = '".$_POST["nuevo"]."' ");

Секунда, выполнение твоего кода последовательное, это означает, что, если ты вводишь правило для этого выполнения кода, он будет выполнен или нет. Хотя читая этот код, только исчезают вещи если $Diferencia у него есть данные; вероятно то, в чем ты нуждаешься, состоит в том, чтобы менять результаты $Quehay и $QuenoHay

$Diferencia = array_diff_assoc($Quehay,$QuenoHay);
if(count($Diferencia) > 5){
  foreach($Diferencia as $BorrarCod) {
   $BorrarCodigos = Borrar_Datos("Codigos" , "id","".$BorrarCod["id"]."");
  }
} else { 
  echo "No ejecuté nada porque no hay más de 5 diferencias...";
}

В конце концов, второй foreach будешь работать, когда он закончит первого всегда; это способ, в котором функционирует PHP.

1
ответ дан 03.12.2019, 17:50
  • 1
    Чтобы видеть, это приходит из двух select многообразные, что может состоять в том, чтобы присоединились данные, которые исчезали бы, или обе два. Поэтому первое включение и потом я удаляю, array_diff он достает мне хорошо данные, если единственный полуторагодовалый ягненок, но если я ввел что-то новое как todaví в не está сохраняемый он это дает из-за qué не está и удали то, что он должен удалять, и новое, так как в array_diff он дает, как дифференцирует все... общее количество, что я думаю, что я liao explicá ndolo 🠘 … –  08.01.2017, 19:24
  • 2
    Он не перемещает ничего, всего добра с explicació n... только нужно двигать места SELECT для того, чтобы оно произошло despué s ввождения реестров. Edité мой ответ, чтобы это отражать. :) –  08.01.2017, 19:47
  • 3
    count больший, что 5 - из-за чего-то особенно? или я могу помещать это в 1? на данный момент он не идет и делает то же самое, что и он делал мне, но я думаю, что он, потому что у меня есть какао с этим, что я не могу с моей жизнью, и как он работает с .load javascript на втором плане и не оставляет мне реестр, ни вижу того, что он делает ни, если он бьет козырем синтаксис, меня приносит немного дорожка горечи, но я понимаю, что помещая счетчик различия уже у меня есть pause, который нуждался. Mañ ана уже более концентрированный проверила все, что я закрепляю, что así если он я идет. Тысячи спасибо po твоя помощь :) –  08.01.2017, 23:07
  • 4
    Нет, счетчик в 5 одинокий для того, чтобы существовало правило, ты можешь оставлять это 0 большим, чтобы знать, что, если есть реестры, он будет работать и иначе ничего не перемещают... Я надеюсь, что ты можешь решать это скоро :) –  08.01.2017, 23:09
  • 5
    страховка, что, если 😊 он cuestió n видения qué он выходит в array –  08.01.2017, 23:13