PHP 문법오류인데 이걸 어떻게 고쳐야하나요?
본문
여기 질답에도 몇번 있는 경우인데 저와 같은 경우는 없는 것 같아 질문드립니다.
게시판 스킨의 write.skin.php 에서 사용하는 부분입니다.
<?php for ($i=1; $is_file && $i<$file_count; $i++) { ?>
<?php $filename = $file[$i]['source'];
$ext = substr(strrchr($filename,"."),1);
$ext = strtolower($ext);
if($ext == 'jpg' || $ext == 'png' || $ext == 'gif') {?>
<?php } ?>
...
생략
...
<?php } ?>
해당 소스의
<?php $filename = $file[$i]['source'];
부분에서 에러 소스가 나옵니다.
PHP Warning: Illegal string offset 'source' in 해당 파일의 해당 라인..
php버전에 따른 문법 오류라고 말씀들을 하시면서
array를 이용하여 수정이 가능하다고 하는데 제가 잘 적용을 못하겠습니다.
(전 현재 php 7.0.12 버전을 사용중입니다.)
이 부분을 어떻게 바꿔야 구문오류가 안나올까요?
답변 2
$filename
=
$file
[
$i
][
'source'
];
warning 은 경고의 의미라.. 치명적인 문제는 아닙니다.
$file
[
$i
][
'source'
]; 의 의미는..
DB 테이블 g5_board_file 에서 가져온 레코드셋에서, [source] 칼럼 내용입니다.
warning 이 발생했다는 것은 $file[$i] 가 정상적인 레코드셋이 아니기에.. source 칼럼도 없다는 의미일 가능성이 큽니다.
$file[$i] 를 제대로 가져오는지를 체크해보는 것이 좋습니다.
체크방법중의 하나는 print_r($file[$i]);
또는 print_r2($file[$i]); 로 정상적인 값이 들어있는 지를 확인해 보는 것입니다.
문장만 보고 확인이 애매하긴 합니다만
<?php // $is_file 은 존재하니 다음문장으로 넘어간거 같은데
// 오류가 난다고 하신 부분에서
// $file 은 존재하나요?
for ($i=1; $is_file && $i<$file_count; $i++) {
// 이 영역에서 체크해보시는게 좋을거 같네요
if ($file && $file[$i] && $file[$i]['source']) {
$filename = $file[$i]['source'];
$ext = substr(strrchr($filename,"."),1);
// 이쯤에서도 마찬가지로
if ($ext) {
$ext = strtolower($ext);
if($ext == 'jpg' || $ext == 'png' || $ext == 'gif') {
}
} }?>
...
생략
...
<?php } ?>
위의 코드로 변경해서 한번 보시죠
중간에 ?> <?php 로 되는 부분은 굳이 닫고 열 필요 없어보여서 제거했습니다만
중간에 다른 코드/태그가 있으면 다시 적용하시고 진행해보세요!-->
답변을 작성하시기 전에 로그인 해주세요.