[문의전문] 문의드립니다,

[문의전문] 문의드립니다,

QA

[문의전문] 문의드립니다,

본문

전에는 문제되지 않았는데 php8에서 아래 코드가 뭔가 문제가 있는 거 같습니다,

말하자면 따옴표없는

$list[$i][wr_xx]

즉 <?php echo $list[$i]['wr_'.$o]?> 이게 문제가 없었으나 지금은 문제되는것 아닌가 싶습니다,

$list[$i][''wr_'.$o'] 도 아니고

$list[$i]["'wr_'.$o"] 도 아니고

ㅜㅜ

<?php echo sprintf('%02d',$k+1)."\n".substr($list[$i]['num']);?> 도 문제가 있는거 아닌가 그렇습니다,

안되니까 뭐든 의심스러워집니다,

 


 
<?php
for($k=0; $k<5; $k++){ 
$m = 61+$k; 
$n = 86+$k; 
$o = 111+$k; 
?>
<span class="btn btn2">
<?php echo sprintf('%02d',$k+1)."\n".substr($list[$i]['num']);?>
</span>

<a id="modal_re_<?php echo $wr_id; ?>_<?php echo $k?>" data-bo_table="<?php echo $bo_table; ?>" data-wr_id="<?php echo $wr_id; ?>" data-mb_id="<?php echo $list[$i]['mb_id']; ?>"  data-wr_name="<?php echo $list[$i]['wr_name']?>" data-wr_subject="<?php echo $list[$i]['wr_subject']?>"  data-bra="<?php echo $list[$i]['wr_'.$o]?>" > 
<?php echo (trim($ext25_00)!='')?date("m.d", strtotime($ext25_00)):''?> <?php echo (trim($list[$i]['wr_'.$m])!='')?date("m.d", strtotime($list[$i]['wr_'.$m])):''?> <?php echo $list[$i]['wr_'.$o]?> </a>
    
 
<?php } ?>
 

 

이 질문에 댓글 쓰기 :

답변 3

다음과 같이 해보시는건 어떨까 합니다.


<?php
for($k=0; $k<5; $k++){ 
    $m = 61+$k; 
    $n = 86+$k; 
    $o = 111+$k; 
?>
<span class="btn btn2">
    <?php echo sprintf('%02d',$k+1)."\n".substr($list[$i]['num']);?>
</span>
<a id="modal_re_<?php echo $wr_id; ?>_<?php echo $k?>" data-bo_table="<?php echo $bo_table; ?>" data-wr_id="<?php echo $wr_id; ?>" data-mb_id="<?php echo $list[$i]['mb_id']; ?>"  data-wr_name="<?php echo $list[$i]['wr_name']?>" data-wr_subject="<?php echo $list[$i]['wr_subject']?>"  data-bra="<?php echo $list[$i]['wr_'.$o]?>" > 
    <?php echo (trim($ext25_00)!='')?date("m.d", strtotime($ext25_00)):''?> <?php echo (trim($list[$i]['wr_'.$m])!='')?date("m.d", strtotime($list[$i]['wr_'.$m])):''?> <?php echo $list[$i]["wr_{$o}"]?> </a>
    
<?php } ?>

수정된 부분

<?php echo $list[$i]['wr_'.$o]?>를 <?php echo $list[$i]["wr_{$o}"]?>이렇게 수정

PHP 8에서 코드가 예상대로 동작하지 않는 문제를 겪고 계시는 것으로 보입니다. PHP 8에서는 여러 가지 변경 사항이 도입되었으며, 이 중 일부는 이전 버전의 코드와 호환되지 않을 수 있습니다. 귀하의 코드를 살펴보고 PHP 8에서 발생할 수 있는 몇 가지 문제점을 지적해 드리겠습니다.

  1. 문자열 접근 변경: PHP 8에서는 문자열에 대한 배열과 비슷한 접근 방식이 더 엄격해졌습니다. 예를 들어, $list[$i]['wr_'.$o]와 같은 동적 필드 이름 접근은 문제가 없어 보입니다. 하지만, 코드의 다른 부분에서 비슷한 접근 방식이 문제를 일으킬 수 있습니다. PHP 8 이전 버전에서는 경고 없이 허용되던 일부 접근 방식이 에러를 발생시킬 수 있습니다.

  2. substr() 함수의 사용: substr($list[$i]['num'])에서 substr() 함수가 예상대로 동작하지 않을 수 있습니다. 예를 들어, substr()에 필요한 길이 인자가 누락되었습니다. PHP 7에서는 이것이 경고 없이 허용되었을 수 있지만, PHP 8에서는 경고나 에러를 발생시킬 수 있습니다.

  3. 타입 체킹 강화: PHP 8은 타입 체킹이 강화되었습니다. 예를 들어, 함수 인자나 반환 값에 대한 타입이 엄격해졌습니다. 코드 내에서 이러한 변경 사항에 맞지 않는 부분이 있다면 문제가 발생할 수 있습니다.

  4. 에러 처리 변경: PHP 8은 에러 처리 방식이 변경되었습니다. 일부 경고가 이제 Error 예외로 처리됩니다. 이전에는 경고로 무시되었던 문제들이 이제 스크립트 실행을 중단시킬 수 있습니다.

해결책:

  • 에러 로깅 활성화: 개발 환경에서 error_reporting(E_ALL)ini_set('display_errors', 1)을 사용하여 모든 에러와 경고를 활성화하면 문제의 원인을 좀 더 쉽게 찾을 수 있습니다.
  • 코드 리뷰 및 테스트: PHP 8에 맞게 코드를 검토하고 필요한 경우 수정하세요. 동적 필드 이름 접근 방식($list[$i]['wr_'.$o])이 문제를 일으키지 않는지 확인하세요.
  • 공식 문서 참조: PHP 8의 변경 사항과 호환성 문제에 대한 공식 문서를 참조하여 코드를 업데이트하세요.

PHP 8로의 전환은 기존 코드에 상당한 수정을 필요로 할 수 있습니다. 코드의 다른 부분에서도 비슷한 문제가 발생할 수 있으므로, 전체적으로 코드를 검토하고 테스트하는 것이 좋습니다

감사합니다, 잘됩니다,

<?php echo sprintf('%02d',$k+1)."\n".substr($list[$i]['num']);?> 이건 빨간부분에 뭔가 문제가 있는가 했는데,,,

substr($list[$i]['num'], 3)이런식으로 안했다고 때려잡는거군요ㅡㅡ

 

답변을 작성하시기 전에 로그인 해주세요.
전체 123,672 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT