#php #if-statement #foreach
#php #if-оператор #foreach
Вопрос:
Я работаю с Filemaker API, который похож на sql — в основном он извлекает данные из полей и из списка.
Я пытаюсь настроить оператор if внутри моего цикла foreach, чтобы он добавлял тег selected=»выбранный» к моей опции выбора в моем html
Вот код
<?php
$layout =amp; $fm->getLayout('Leads');
$values = $layout->getValueList('LeadStatus');
$list_menu = '<select name="LeadDocStatusSelect">';
foreach ($values as $value)
{
$list_menu .='<option value="' . $value . '">' . $value . '</option>' ;
}
$list_menu .= '</select>';
echo $list_menu;
?>
Как я могу добавить оператор if, подобный этому, в цикл foreach?
if ($businessJudgements == 'No') {
echo 'checked="checked"';
} else {
echo '';
}
Ответ №1:
Тело foreach
цикла — это просто блок операторов, поэтому вы можете вставить столько, сколько захотите, например, с:
foreach ($values as $value) {
$list_menu .='<option value="' . $value . '">' . $value . '</option>';
if ($businessJudgements == 'No') {
echo 'checked="checked"';
} else {
echo '';
}
}
Однако вы уверены, что у вас есть правильный атрибут для option
тега? Если вы намерены выбрать определенную опцию, checked
это неправильный метод (он предназначен для полей ввода флажков). selected
Атрибут является правильным для тега HTML option
.
Поэтому вам было бы лучше использовать что-то вроде:
# The default is orange.
$default_value = "orange";
# Process every option.
foreach ($values as $value) {
# Add [<option value="X"].
$list_menu .= '<option value="' . $value . '"';
# Add [ selected] ONLY for default one.
if ($value == $default_value) {
$list_menu .= ' selected';
}
# Add [>X</option>].
$list_menu .= '>' . $value . '</option>';
}
Это даст вам option
теги по желанию, но к тому, значение которого соответствует значению по умолчанию, также будет прикреплен selected
атрибут.
Предполагая, что $values
хранится массив {"red", "black", "orange", "yellow"}
, вы бы получили (красиво отформатированный здесь для целей ответа):
<option value="red"> red </option>
<option value="black"> black </option>
<option value="orange" selected> orange </option>
<option value="yellow"> yellow </option>
Комментарии:
1. ; позволяет мне добавить оператор if к переменной?
2. @user3795995, вы не добавляете
if
оператор к переменной. Скорее вы запускаетеif
внутриforeach
, чтобы немного изменить меню списка, которое вы создаете. Смотрите мой второй сегмент кода для одного из способов сделать это.3. Ааааа, в этом есть смысл! Я знал, что выбран правильный атрибут. Должно ли это быть ‘Selected =»Выбранный»‘?
4. @user3795995, не для HTML, просто
selected
само по себе будет в порядке. XHTML запрещает минимизацию, так что это потребуетсяselected="selected"
.
Ответ №2:
Я предполагаю, что вы уже знаете, как получить свое $ businessJudgement , так что код должен быть примерно таким
<?php
$layout =amp; $fm->getLayout('Leads');
$values = $layout->getValueList('LeadStatus');
$list_menu = '<select name="LeadDocStatusSelect">';
foreach ($values as $value)
{
if ($businessJudgements == 'No') {
$list_menu .='<option value="' . $value . '">' . $value . '</option>' ;
} else {
$list_menu .='<option value="' . $value . '" selected >' . $value . '</option>' ;
}
}
$list_menu .= '</select>';
echo $list_menu;
?>
Комментарии:
1. Поскольку код находится в рабочем состоянии, такое использование
echo
внутри цикла довольно контрпродуктивно. РЕДАКТИРОВАТЬ: теперь лучше.