Как я могу разделить результат foreach на 2 деления? - PullRequest
0 голосов
/ 05 февраля 2019

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

$sqla=mysql_fetch_row($sql);

$x=1;
if($x<50)
{
?>
    <div class="area area-1">
<?  
    foreach($sqla as $key=>$values){
        if ($key == "0") {
            continue;
        }
        $icheck = ($values > 0) ? "icheck" : "";
        $ichecked = ($values > 0) ? "isChecked" : "";

        echo "<label class='label-area label-".$values['num".$x."'][$x]." ".$ichecked."'><input name='data[ar][".$x."][]' type='checkbox' value='".$x."' title='".$x."' class='".$icheck." archeck1'><span class='label-num'>".$x."</span><span class='label-check-mark'></span></label>";

       if ($key == "50") {
           break;
        }
        $x++;

        if ($values > 0) {
            $new_rand_arr[] = $values;
        }
    }
?>
</div>
<?
}else{
?>
    <div class="zodiak ar-1">
<?
    foreach($sqla as $key=>$values){
        if ($key == "50") {
            continue;
        }
        $icheck = ($values > 0) ? "icheck" : "";
        $ichecked = ($values > 0) ? "isChecked" : "";

        echo "<label class='label-area label-".$values['num".$x."'][$x]." ".$ichecked."'><input name='data[ar][".$x."][]' type='checkbox' value='".$x."' title='".$x."' class='".$icheck." archeck1'><span class='label-num'>".$x."</span><span class='label-check-mark'></span></label>";

        if ($key == "62") {
            break;
        }
        $x++;

        if ($values > 0) {
            $new_rand_arr[] = $values;
        }
    }
?>
</div>
<?  
}
?>

Выходные данные помещают все в первый div, но не в "zodiak ar-1".Цель состоит в том, чтобы все после 50-го ключа войти в это деление.Надеюсь, что удалось объяснить проблему ... Спасибо

1 Ответ

0 голосов
/ 05 февраля 2019

Прямо сейчас вы делаете это:

$x=1;
if($x<50)
{
 // your code
} else {
  // your code
}

Проблема в том, что вы делаете foreach ВНУТРИ оператора if, поэтому $x < 50 всегда будет верным, потому что непосредственно перед вами $x = 1.

Теперь в обоих циклах foreach вы делаете это:

foreach($sqla as $key=>$values){
   if ($key == "0") {
       continue;
   }
   // your code
}

foreach($sqla as $key=>$values){
    if ($key == "50") {
        continue;
    }
    // your code
}

Таким образом, вы используете переменную $x, которую вы увеличиваете каждый ход, но у вас есть $key, который вы используетеслишком, чтобы проверить, является ли значение <50 или нет?

Так попробуйте что-то вроде этого:

$new_rand_arr = array();

$open_first_div  = false;
$open_second_div = false;

$html = "";

foreach($sqla as $key=>$values){
   if ($key < "50") { 

       // You open your first div one time
       if (!$open_first_div) {
           $html .= "<div class=\"area area-1\">";
           $open_first_div = true;
       }

       $icheck = ($values > 0) ? "icheck" : "";
       $ichecked = ($values > 0) ? "isChecked" : "";

       html .= "<label class='label-area label-".$values['num".$x."'][$x]." ".$ichecked."'><input name='data[ar][".$x."][]' type='checkbox' value='".$x."' title='".$x."' class='".$icheck." archeck1'><span class='label-num'>".$x."</span><span class='label-check-mark'></span></label>";

       if ($values > 0) {
           $new_rand_arr[] = $values;
       }

   } else {
        // You close your first div and open the second div
       if (!$open_second_div) {
           $html .= "</div><div class=\"zodiak ar-1\">";
           $open_second_div = true;
       }

       $icheck = ($values > 0) ? "icheck" : "";
       $ichecked = ($values > 0) ? "isChecked" : "";

       $html .= "<label class='label-area label-".$values['num".$x."'][$x]." ".$ichecked."'><input name='data[ar][".$x."][]' type='checkbox' value='".$x."' title='".$x."' class='".$icheck." archeck1'><span class='label-num'>".$x."</span><span class='label-check-mark'></span></label>";

       if ($values > 0) {
           $new_rand_arr[] = $values;
       }

   }
}

// After the foreach your close your div
$html .= "</div>";

// You display it
echo $html;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...