테스트 사이트 - 개발 중인 베타 버전입니다

[문의전문] 문의드립니다, 채택완료

뽕엄능브라 1년 전 조회 1,360

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

말하자면 따옴표없는

$list[$i][wr_xx]

즉  이게 문제가 없었으나 지금은 문제되는것 아닌가 싶습니다,

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

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

ㅜㅜ

도 문제가 있는거 아닌가 그렇습니다,

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

 

</p>

<p> </p>

<p><?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']);?></p>

<p></span></p>

<p>

<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>

    

 </p>

<p><?php } ?></p>

<p> </p>

<p>

 

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트

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

</p>

<p><?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></p>

<p><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 } ?>

수정된 부분

이렇게 수정

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

감사합니다, 잘됩니다,

."\n".substr($list[$i]['num']);?> 이건 빨간부분에 뭔가 문제가 있는가 했는데,,,

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

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

뽕엄능브라
1년 전
감사합니다 많은 도움이되었씁니다,

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인