차례:
비디오: [자바 웹 개발 워크북] #23 4장 - 데이터베이스에서 데이터 가져오기 2024
HTML5 및 CSS3 프로그래밍을위한 PHP로 구분 된 데이터로 작업하는 경우 직접 CSV 데이터를 읽을 수 있습니다. 너무 어렵지 않습니다. readContactCSV에 대한 다음 코드를 살펴보십시오. php:
readContactCSV. php연락처
PHP 인쇄 <<< 여기
첫 번째 | 마지막 | 이메일 | 전화 |
---|---|---|---|
$ fName | $ lName | $ phone |
이 프로그램에서는 CSV 파일의 내용을 읽고 HTML 표에 표시했습니다. 그것은 다른 텍스트 파일을 읽는 것보다 끔찍한 차이는 아니지만 새로운 새로운 왜곡이 있습니다.
-
표제를 인쇄하십시오.
필드 이름을 사용하여 테이블 표제를 수동으로 인쇄하는 것이 가장 쉽습니다. 간단한 heredoc이 그 일을 할 것입니다.
인쇄 <<< 여기
첫 번째 마지막 이메일 전화 배열에 데이터를로드합니다.
PHP에는 file이라는 놀라운 도구가 있습니다. 이 함수는 파일 이름만을 입력으로 사용합니다. 그런 다음 파일을 열고 모든 내용을 배열에 배치하여 각 행을 배열의 고유 요소에 배치합니다. 파일 포인터를 만들거나 파일을 열거 나 닫을 필요가 없습니다. 이 예제에서는 연락처의 내용을 보여줍니다. csv는 $ data라는 배열에로드됩니다.
$ data = file ("contacts. csv");
foreach 루프를 사용하여 내용을 단계별로 처리하십시오.
간단한 foreach 루프로 파일 내용을 살펴볼 수 있습니다. 현재 줄은 $ line이라는 변수에 저장됩니다.
foreach ($ data as $ line) {
각 행을 자체 배열로 분해합니다.
폭력적인 이름을 가진 기능을 사랑해야합니다. 특히 유용 할 때가 많습니다. explode 명령을 사용하여 선을 해당 구성 요소 파트로 분리하십시오.
$ lineArray = 폭발 ("t", $ line);
list () 함수를 사용하여 배열의 각 요소를 자체 변수에 저장합니다.
배열을 사용할 수는 있지만 프로그램을 만들 때 사용한 것과 같은 변수 이름으로 데이터를 다시 전달하는 것이 더 쉽습니다. list () 구문은 정확하게 그것을 수행합니다. 여러 개의 변수 이름을 입력하고 배열을 할당하면 배열의 각 요소가 해당 변수에 할당됩니다.
list ($ fName, $ lName, $ email, $ phone) = $ lineArray;
HTML 테이블 행에 변수를 인쇄하십시오.
모든 변수는 HTML 테이블에 잘 맞습니다. 따라서 테이블의 현재 행을 인쇄하십시오.
인쇄 <<< 여기
$ fName $ lName $ email $ phone 놀이를 정리하십시오.
할 일이 조금 있습니다. 루프를 완료하고 HTML 테이블을 닫습니다. file () 함수에 의해 자동으로 수행되었으므로 파일을 닫을 필요가 없습니다.
} // foreach // 테이블 아래쪽을 인쇄하십시오. print "
file () 함수 및 list ()와 같은 바로 가기를 사용하면 CSV 데이터로 작업하기가 매우 쉽습니다. 그것이 바로 이러한 유형의 데이터가 기본 데이터 문제에 대해 인기가있는 한 가지 이유입니다.
list () 구문은 숫자로 인덱스 된 배열에서만 작동하며 배열 인덱스는 0에서 시작한다고 가정합니다. 연관 배열에 list () 함수를 사용하려면 array 변수를 array_values () 함수로 묶습니다. 기술적으로 list ()는 함수가 아니라 언어 구조입니다.
file () 함수는 매력적이지만 모든 상황에 완벽하지는 않습니다. 파일 크기가 비교적 작 으면 큰 편이지만 크기가 큰 파일로로드하려고하면 메모리 제한이 발생합니다. readContact에서 사용되는 "한 번에 한 줄"접근 방식입니다. 주어진 시간에 메모리에 단지 적은 양의 데이터 만 있기 때문에 PHP에는이 문제가 없습니다. HTML purists는 HTML 테이블을 볼 때마다 놀라지 않는 경향이 있습니다. HTML 테이블이 한때 레이아웃 기술로 끔찍하게 학대 당했던 것은 사실이지만, 그렇다고해서 결코 사용하지 않아야한다는 것을 의미하지는 않습니다.