#php #html #codeigniter #conditional-operator
#php #HTML #кодовое устройство #условный оператор
Вопрос:
В настоящее время у меня есть поле выбора, которое заполняет свои данные из класса контроллера. На данный момент все значения заполняются должным образом, как и предполагалось, но есть некоторые нулевые значения firstname
, для которых я пытаюсь добавить тернарный оператор, чтобы заменить его электронной почтой.
Похоже, это не работает в моем классе контроллера, так как я неправильно ставлю круглые скобки.
Вот мой текущий код:
public function getContacts($id){ $option = "lt;option value='0'gt;Selectlt;/optiongt;"; $modelList = $this-gt;listings_model-gt;get_contact(array('contact_type'=gt;3),'firstname,lastname,email,refno'); foreach($modelList as $m){ $option .= "lt;option value='".$m['firstname']." ".$m['lastname']." - ".$m['refno']."' id='".$m['id']."'gt;".$m['firstname']." ".$m['lastname']." - ".$m['refno']."lt;/optiongt;"; } echo json_encode($option); }
Я попробовал следующее, но я получаю синтаксическую ошибку:
$option .= "lt;option value='"($m['firstname'].$m['lastname'] ? $m['firstname']." ".$m['lastname']." - ".$m['refno'] : $m['email'])"' id='".$m['id']."'gt;".$m['firstname']." ".$m['lastname']." - ".$m['refno']."lt;/optiongt;";
Чего я хочу достичь, так это:
value="lt;?php echo ($ow['firstname'].$ow['lastname']?$ow['firstname'].' '.$ow['lastname']:($ow['email']?$ow['email']:$ow['mobile'])).' - '.$ow['refno']; ?gt;"
Комментарии:
1.
$m['firstname'].$m['lastname']
это и есть зло. Вы должны проверять наличие нулевого значения только$m['firstname']
для одного, а не для обоих.2. и это должно быть
$option .= "lt;option value='".($m['firstname'] ? $m['firstname']." ".$m['lastname']." - ".$m['refno'] : $m['email'])."' id='".$m['id']."'gt;".$m['firstname']." ".$m['lastname']." - ".$m['refno']."lt;/optiongt;";
3. @OMiShah хорошо, но теперь что, если я хочу проверить по имени и фамилии. Я на самом деле хочу, чтобы это выглядело так:
($ow['firstname'].$ow['lastname']?$ow['firstname'].' '.$ow['lastname']:($ow['email']?$ow['email']:$ow['mobile'])).' - '.$ow['refno'];
Ответ №1:
У нас есть такие вещи, называемые переменными, которые помогают коду стать читабельным. Кроме того, круглые скобки могут помочь идентифицировать группы переменных с операциями между ними в тернарном операторе. У вас есть несколько неуместных '
и "
в вашем коде, как в PHP, так и в HTML.
Из того, что я понимаю из ваших требований, следующий код делает это: если имя и фамилия не пусты, он будет использовать lt;firstnamegt; lt;lastnamegt; - lt;refgt;
значение и текст опции, которую он будет использовать lt;emailgt;
, если электронная почта не пуста, иначе lt;mobilegt;
$name = ( $m['firstname'] amp;amp; $m['lastname'] ) ? ( $m['firstname'] . ' ' . $m['lastname'] ) : ( '' ); $value = $name ? ($name . ' - ' . $m['refno']) : ($m['email'] ? $m['email'] : $m['mobile']); $id = $m['id']; $option .= "lt;option value="$value" id="$id"gt;$valuelt;/optiongt;";
Кстати, вы не можете json_encode HTML-строку.
Комментарии:
1. Чего я пытаюсь добиться, так это в основном
($ow['firstname'].$ow['lastname']?$ow['firstname'].' '.$ow['lastname']:($ow['email']?$ow['email']:$ow['mobile'])).' - '.$ow['refno'];
того, чтобы он проверял, есть ли имя и фамилия, а затем размещал эти значения в другом месте по электронной почте или на мобильном телефоне. Итак, как теперь я могу сформировать это в переменной $value?2. @JAYZ вы хотите проверить, пусты ли имя и фамилия или одного из них достаточно?
3. Мне нужны они оба, а затем, кроме того, в электронной почте должен быть троичный оператор, как я показал в своем примере выше
4. @JAYZ обновил ответ на эти требования, и, пожалуйста, обратите внимание, что код json_encode внизу, безусловно, находится не в том месте.
Ответ №2:
$m['firstname'].$m['lastname']
это и есть зло. Вы должны проверять null
значение только для $m['firstname']
одного, а не для обоих.
Кроме того, это должно быть:
$option .= "lt;option value='".($m['firstname'] !== null ? $m['firstname']." ".$m['lastname']." - ".$m['refno'] : $m['email'])."' id='".$m['id']."'gt;".($m['firstname'] !== null ? $m['firstname']." ".$m['lastname']." - ".$m['refno'] : $m['email'])."lt;/optiongt;";