Twig возвращает true, даже если не в массиве (проверенное поле) - PullRequest
0 голосов
/ 14 февраля 2020

Возможно, я делаю это неправильно, но я запускаю массив значений, подобных этому.


    {% for checkboxDataKey, checkboxData in checkbox %}
     <div class="form-check">
                <input class="form-check-input checkbox-questionlist" type="checkbox"
            {% if checkboxDataKey in values %} checked {% endif %}
            data-report-id="{{ reportId }}" name="{{ name }}" value="{{ checkboxDataKey }}" id="{{(name)}}-{{checkboxDataKey}}">
        <label class="form-check-label" for="{{(name)}}-{{checkboxDataKey}}">
            {{ checkboxData.answer }}
        </label>
    </div>
    {% endfor %}

Он проверяет, находится ли checkboxDataKey в массиве значений. Это работает до тех пор, пока я не добавлю значение different в массив (оно называется different).

 array(2) { [0]=> string(1) "3" [1]=> string(9) "different" } 

Когда этот флажок установлен, первый флажок также проверяется, и я не могу выяснить, почему, так как значение 0 отсутствует в массиве.

enter image description here

Когда я смотрю на ключи строки флажка array(5) { [0]=> int(0) [1]=> int(1) [2]=> int(2) [3]=> int(3) [4]=> int(4) }, они являются целыми числами.

1 Ответ

0 голосов
/ 17 февраля 2020

Это была действительно PHP проблема. Когда я запустил функцию in_array, она вернула true. Поэтому я должен был сделать это, чтобы заняться этим.

 foreach ($fields['answers'] as $key => $value) {
            $options[$key] = array_merge($value, ['checked' => in_array((string)$key, $values)]);
        }

...