이번 포스트에서는 php의 조건문과 반복문을 활용하는 예제와 함께 scandir()과 count()라는 내장 함수에 대해서 알아보겠다.
조건문과 반복문을 활용하는 내용은 생활코딩 수업 영상에서 자세히 설명해 주기 때문에 여기서는 내장 함수에 대해서만 정리해 보겠다.
이전 포스트
php의 배열 관련 내장 함수들
생활코딩의 php 수업 영상: 반복문과 조건문의 활용
<?php
$list = scandir('./data');
$i = 0;
while($i < count($list)){
if($list[$i] != '.') {
if($list[$i] != '..') {
echo "<li><a href=\"index.php?id=$list[$i]\">$list[$i]</a></li>\n";
}
}
$i = $i + 1;
}
?>
반복문과 조건문을 응용해서 위와 같은 코드를 만들었지만, 이건 반복문과 조건문의 활용 예제일 뿐, 효율적인 코드는 아니다.
그리고 이걸 훨씬 더 간단하게 구현할 수 있는 foreach문이라는 반복문이 있다.
하지만 여기서는 설명하지 않고 일단 넘어가겠다.
scandir()
scandir() 함수는 php에서 디렉토리(폴더) 내부의 파일과 디렉토리 목록을 읽어와 배열로 반환하는 내장 함수다.
성공하면 파일 이름 목록이 담긴 배열을 반환하고, 실패하면 false를 반환한다.
반환된 배열에는 기본적으로 현재 디렉토리(.)와 상위 디렉토리(..)를 나타내는 두 개의 항목이 포함되는 특징이 있다.
<?php
$list = scandir('./data');
$list = array_diff($list, ['.', '..']);
$list = array_values($list);
$i = 0;
while($i < count($list)){
echo "<li><a href=\"index.php?id=$list[$i]\">$list[$i]</a></li>\n";
$i++;
}
?>
생활코딩 수업 영상의 코드를 아주 약간 리팩토링 해봤다.
while문 내에서 if문을 두 번 중첩하여 .과 ..을 제외하는 방법은 비효율적이다.
이전 포스트에서 소개한 array_diff() 함수와 array_values() 함수를 사용하는 방법이 훨씬 더 간결하고 효율적이다.
물론 생활코딩의 이고잉 님이 이런 방법을 몰라서 안 하신 건 아니다.
너무 많은 걸 알려주면 머리만 아플 테니, 가르쳤던 함수와 문법들만을 사용해서 문제를 해결하신 것뿐이다.
조건문도 foreach문으로 바꾸면 더 간결하고 효율적인 코드가 되겠지만, 생략하겠다.
count()
count() 함수는 배열Array이나 객체Object에 포함된 요소Element의 개수를 세어 정수로 반환하는 php 내장 함수다.
딱히 예제 코드가 필요한 어려운 함수가 아니니 넘어가도록 하겠다.
오늘의 포스트는 여기까지다.
글에서 foreach문을 자주 언급했는데, 정리하고 넘어갈지, 아니면 생활코딩에서도 딱히 알려주지 않고 있으니 다음 영상의 내용을 정리할지 고민이 된다.
다음 포스트
php의 반복문, do-while문과 foreach문
응원이나 피드백이 담긴 댓글은 제가 계속 블로그를 해나갈 수 있는 원동력이 됩니다. 😊
지인에게 보여주고 싶은 글이었다면 URL을 복사해서 메신저나 소셜 미디어에 공유해 주세요.
0 Comments
댓글 쓰기
🔸 댓글은 블로그 운영자의 승인 후에 블로그에 표시됩니다.
🔸 비로그인 방문자 분께서는 '익명'보다 이름/URL로 댓글을 남겨주시면 감사하겠습니다. (URL은 생략 가능합니다.)
🔸 구글 로그인 방문자는 '알림 사용'에 체크를 하시면, 남겨주신 댓글에 대한 답글 알림을 메일로 받아볼 수 있습니다. 📩