Обнаружить первое изменение в результатах значения столбца - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь получить разделитель в меню автоматического выбора.

Теперь, когда имя поля меняет значение с 0 на 1, я хочу обнаружить это и вставить разделитель данных.

Это то, что я имею до сих пор, но оно повторяется для всех вхождений с 1 значением.

fieldname 0
fieldname 0
fieldname 0
[here should the change be detected and the divider inserted]
fieldname 1
fieldname 1
fieldname 1

этот код создает делитель над всеми значениями 1:

if($fieldname == "1") {
    $output .= "<option data-divider=\"true\">------------</option>"; 
}

Кто-нибудь знает, как выйти из этого после того, как первый найден?

Ответы [ 4 ]

0 голосов
/ 15 октября 2018

Простой метод:

Отслеживание предыдущего номера с помощью переменной отслеживания вне основного цикла.

т.е.

// Outside the loop, and $fields being the array you will traverse through
$previousUniqueFieldName = key(reset($fields));

for ($fields as $fieldName => $fieldValue) {

    // Inside the loop:
    if($fieldname != $previousUniqueFieldName) {
        $output .= "<option data-divider=\"true\">------------</option>";
        $previousUniqueFieldName = $fieldName;
    }
}
0 голосов
/ 15 октября 2018

Оператор php break; должен работать.

Предполагается, что это происходит в каком-то цикле:

if($fieldname == "1") {
  $output .= "<option data-divider=\"true\">------------</option>"; 
  break; //should stop the loop from processing further.
}
0 голосов
/ 15 октября 2018

Перед циклом:

$last_fieldname = '';

Внутри цикла:

if (empty($last_fieldname))
    $last_fieldname = $fieldname;

if ($fieldname != $last_fieldname) {
    $output .= "<option data-divider=\"true\">------------</option>";
    $last_fieldname = $fieldname;
}
0 голосов
/ 15 октября 2018

Вам необходимо сохранить состояние, в котором на выходе напечатан разделитель данных

$printed = false;
foreach ($loopingLogic) {
  // normal option logic
  if ($fieldname === '1' && !$printed) {
    $output .= '<option>..</option>';
    $printed = true;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...