복붙노트

echo 문 내부를 차단한다면?

PHP

echo 문 내부를 차단한다면?

나는 "구문 분석 오류 : 구문 오류, 예기치 않은 T_IF 오류 ..."오류가 발생하여 허용되지 않는 것으로 의심됩니다. 그러나 나는 나의 목표를 성취 할 방법을 찾지 못했습니다. 내 코드는 다음과 같습니다.

<?php 

  $countries = $myaddress->get_countries();

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

그것은 선택 요소에 국가 목록을 표시하고 미국을 기본값으로 설정하는 것입니다. 나는 슬프게도 일하지 않는다 ...

해결법

  1. ==============================

    1.단축 된 IF / Else 문으로 작동하는 삼항 연산자를 사용하려고합니다.

    단축 된 IF / Else 문으로 작동하는 삼항 연산자를 사용하려고합니다.

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

    2.언제든지 (? ) 구문을 사용할 수 있습니다.

    언제든지 (? ) 구문을 사용할 수 있습니다.

    이 true이면 명령문은 로 평가됩니다. 그렇지 않은 경우, 으로 평가됩니다.

    예를 들면 :

    $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. ==============================

    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);
    
  4. ==============================

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

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

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

    모든 것을 하나의 선으로 채우기를 원하는 것은 고인입니다. 뚜렷하게 기록하십시오.

    그러나 다른 방법, 더 나은 방법이 있습니다. echo를 전혀 사용할 필요가 없습니다. 템플릿 사용법을 배우십시오. 데이터를 먼저 준비하고 표시 한 다음 준비하십시오.

    비즈니스 로직 부분 :

    $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 ?>
    
  5. from https://stackoverflow.com/questions/3507042/if-block-inside-echo-statement by cc-by-sa and MIT license