먼저, 용서 해주세요. 아직은 아주 새롭고 지금은 조금 피곤합니다.배열이 이상한 PHP Scandir 또는 Split 오류
나는 이것에 대한 내 재치가있다. 약간의 PHP 코드를 작성 했으므로, 작업중인 사이트에서 뉴스 레터를 쉽고 빠르게 업데이트 할 수 있습니다. 목표는 첫 번째 뉴스 레터를 포함 된 pdf로 표시 한 다음 나머지를 모두 그 아래 링크로 표시하는 것입니다. 따라서 뉴스 레터를 작성하는 모든 사용자는 폴더에 해당 뉴스 레터를 배치하고 적절한 명명 형식을 사용해야합니다.
나는 scandir을 사용하여 디렉토리를 스캔하고 모든 파일을 내림차순으로 반환합니다. 그러면 가장 최근 파일이 정확하게 (YYYY/MM) 명명 된 경우 먼저 제공됩니다. 그런 다음 파일 이름을 위로 나눠서 달의 실제 이름을 반환하는 함수에 전달하고 모든 것을 html에 연결하여 페이지를 생성합니다.
한 가지를 제외하고는 완벽하게 작동합니다. 파일 중 하나에 해당 월이 표시되지 않습니다. screenshot에서 2014 년 8 월의 파일에 해당 월이 표시되지 않으며 간단하게 파악할 수 없다는 것을 알 수 있습니다. (바닥에있는 물건에 대해 미안 해요. 충분한 인원이 없기 때문에 2 인 이상의 링크를 게시 할 수 없습니다. 모든 이미지를 하나의 이미지로 만들고, 아래쪽 절반은 무시하십시오.)
다음 코드는 내 주요 프로그램은 내가 한 문제 해결의 일부를 볼 수있는 스크린 샷에서
//sort in descending order so the most recent date is first
$newsletterarray=scandir("../docs/newsletter", SCANDIR_SORT_DESCENDING);
//print_r($newsletterarray); //shows all the values
//Splits the selected newsletter array into another array, [1] will be the month which can be passed into month.php
$month = split("_", $newsletterarray[0]);
$filenameSplit = split("_", $newsletterarray[0]);
//The most recent newsletter is embedded
echo('<p>
<a href="../docs/newsletter/' . $newsletterarray[0] . '"><h4 align="justify">' . getMonth($filenameSplit[1]) . ' ' . $filenameSplit[0] . ' Newsletter</h4></a>
</p>
<p>
<object width="50%" height="500px" data="../docs/newsletter/' . $newsletterarray[0] . '" type="application/pdf"></object>
</p><br> <h4>Older Newsletters</h4>');
//starts at 1 so it skips the most recent newsletter
//increments until it reaches 3 less than max, otherwise it shows directory stuff
for($i = 1; $i <= (count($newsletterarray) - 3); $i++) {
$filenameSplit = split("_", $newsletterarray[$i]);
echo('<a href="../docs/newsletter/' . $newsletterarray[$i] . '">' . getMonth($filenameSplit[1]) . ' ' . $filenameSplit[0] . ' Newsletter</a><br>');
}
function getMonth($nummonth) {
switch ($nummonth) {
case 01:
return "January";
break;
case 02;
return "February";
break;
case 03:
return "March";
break;
case 04:
return "April";
break;
case 05:
return "May";
break;
case 06:
return "June";
break;
case 07:
return "July";
break;
case 08:
return "August";
break;
case 09:
return "September";
break;
case 10:
return "October";
break;
case 11:
return "November";
break;
case 12:
return "December";
break;
default:
return "";
break;
}
}
을 (형식 미안, 나 때문에 이런 바보 같은 제한으로 일을 결합했다). 스플릿에 1이 08에 대한 올바른 값이어야한다고 나와 있지만 getMonth 함수로 전달하면 작동하지 않습니다. 08에 전달하면 잘 동작하므로 오류는 getMonth 함수에없는 것 같습니다. 이 외에도 오류를 전혀 변경하지 않은 실제 디렉터리에 파일을 추가하려고했지만 의도 한 기능이 작동했습니다. 또한 문제가있는 파일을 제거하고 같은 이름을 가진 다른 파일의 이름을 바꾸려고 시도했지만 동일한 오류가 발생했습니다.
정말이 파일이 작동하지 못하게하는 무언가를 쓴 바보 같은 오류 일뿐입니다. 정말 슬픔을 느끼고 있습니다. 고맙습니다.