programing

만약 블록 인사이드 에코 문장이라면?

css3 2023. 10. 22. 20:19

만약 블록 인사이드 에코 문장이라면?

구문 오류: 구문 오류, 예기치 않은 T_가 발생하여 허용되지 않는 것 같습니다.만약에..." 오류가 발생했습니다.하지만 저는 제 목표를 달성할 방법을 찾지 못했습니다.제 암호는 이렇습니다.

<?php 

  $countries = $myaddress->get_countries();

  foreach($countries as $value){
    echo '<option value="'.$value.'"'.if($value=='United States') echo 'selected="selected"';.'>'.$value.'</option>';
  }
  ?>

선택한 요소의 국가 목록을 표시하고 미국을 기본값으로 설정합니다.전 슬프게 일하지 않아요...

단축 IF/Else 문 역할을 하는 항공 연산자를 사용하고자 합니다.

echo '<option value="'.$value.'" '.(($value=='United States')?'selected="selected"':"").'>'.$value.'</option>';

언제든지 사용할 수 있습니다.( <condition> ? <value if true> : <value if false> )syntax (ternary operator라고 합니다 - 나를 기억해준 Mark 덕분입니다 :)).

한다면<condition>사실이고, 그 진술은 다음과 같이 평가될 것입니다.<value if true>. 그렇지 않다면 다음과 같이 평가될 것입니다.<value if false>

예를 들어 다음과 같습니다.

$fourteen = 14;
$twelve = 12;
echo "Fourteen is ".($fourteen > $twelve ? "more than" : "not more than")." twelve";

이는 다음과 같습니다.

$fourteen = 14;
$twelve = 12;
if($fourteen > 12) {
  echo "Fourteen is more than twelve";
}else{
  echo "Fourteen is not more than twelve";
}

3원 연산자 사용:

echo '<option value="'.$value.'"'.($value=='United States' ? 'selected="selected"' : '').'>'.$value.'</option>';

그리고 그렇게 하는 동안, 당신은printf코드를 보다 쉽게 읽을 수 있도록 하기 위해 다음을 수행합니다.

printf('<option value="%s" %s>%s</option>',
    $value,
    $value == 'United States' ? 'selected="selected"' : ''
    $value);

가독성을 위해 그것은 다음과 같은 것이어야 합니다.

<?php 
  $countries = $myaddress->get_countries();
  foreach($countries as $value) {
    $selected ='';
    if($value=='United States') $selected ='selected="selected"'; 
    echo '<option value="'.$value.'"'.$selected.'>'.$value.'</option>';
  }
?>

모든 것을 한 줄로 묶고 싶은 욕망은 죽음입니다.또박또박 써라.

하지만 또 다른 방법이 있습니다. 더 좋은 방법이죠.에코를 전혀 사용할 필요가 없습니다.템플릿 사용법을 배웁니다.데이터를 먼저 준비하고 준비된 상태에서만 표시합니다.

비즈니스 로직 파트:

$countries = $myaddress->get_countries();
$selected_country = 1;    

템플릿 부분:

<? foreach($countries as $row): ?>
<option value="<?=$row['id']?>"<? if ($row['id']==$current_country):> "selected"><? endif ?>
  <?=$row['name']?>
</option>
<? endforeach ?>

언급URL : https://stackoverflow.com/questions/3507042/if-block-inside-echo-statement