PHP (un) проверяет флажок из 2 динамических массивов при их сравнении - PullRequest
1 голос
/ 05 мая 2019

У меня есть 2 массива, $ item и $ previousItem.$ item содержит все возможные выборки $ previousItem содержит выборки, уже сохраненные в базе данных.Например, у меня есть флажки с яблоками, апельсином, бананом и в моей базе данных я записал, что пользователь ранее выбрал яблоко и банан.Как я могу заполнить флажки, чтобы только оранжевый был снят, в то время как другие два будут проверены.Вложенный цикл for создает дубликаты, если у меня есть несколько значений для $ previousItem.Это должно быть сделано с использованием только PHP.Есть ли функция сортировки, которую я могу использовать для этого?

Вот код:

    for($i = 0; $i < $index; $i++)
        for($j = 0; $j < $count; $j++)
    {
        echo '<li>
                <!--these are the individual check boxes-->';
        echo '<input type="checkbox" name="item[]" id="$item+$count" value="' . $item[$j] . '"'.($previousItem[$i] == $item[$j] ?'checked': '') .'>
                <!--these are the values of the check boxes-->
                <label for="$item+$count">' . $item[$j] . '</label>
                <input type="hidden" name="item_list[]" value="' . $item[$j] . '">';
    }

1 Ответ

1 голос
/ 05 мая 2019

Вам нужен только один флажок для каждого элемента в $ item. Поэтому делайте только один цикл, а не $ item. Он дает дубликаты, потому что он перечисляет элементы в $ item (цикл $ j) для каждого элемента в $ previousItem (цикл $ i).

Читайте о PHP: функция in_array. Если вы используете это вместо $previousItem[$i] == $item[$j], вы можете исключить цикл $ previousItem. Синтаксис будет что-то вроде in_array($item[$j],$previousItem)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...