2015-01-27 4 views
0

여러 레코드에 포함 된 배열에 대해 foreach 루프를 실행하면 레코드 당 하나의 배열 집합 만 표시하도록 배열을 가져올 수 없습니다. 대신 각 인스턴스에 대한 모든 배열 레코드를 모든 결과에 표시합니다. CSV 파일을 읽고 있는데이 파일에는 25 개의 레코드 또는 500 개의 레코드 (레코드 수는 알 수 없음)가있을 수 있지만 "옵션"필드를 읽으면 모든 레코드의 배열이 결과. 실행중인 코드는 다음과 같습니다.PHP foreach 각 레코드에 대한 배열 목록

$option_list = explode(',', $csvdata['Options']); 
foreach ($option_list as $feature) { 
    $output .= '<li>' . $feature . '</li>'; 
} 

$content = '<ul>' . $output . '</ul>'; 

알다시피 난 순서가없는 목록을 만들고 있습니다. 정렬되지 않은 목록을 만드는 데 성공하는 동안 "옵션"필드의 모든 배열이 결과에 하나의 엄청난 정렬되지 않은 목록으로 표시됩니다. 특정 단일 레코드별로 단일 배열을 나열하지 않습니다.

Year  Make  Model  Color  Options (the array) 
2010  Chevy Camaro Black  2dr, convertible, 6.2L, V8 
2011  Dodge Charger Red  2dr, coupe, 3.6L, V6 
2013  Ford  F250  Blue  4WD, Crew Cab, V10, Tow Package 

출력은 다음과 같은 순서없는 목록 작성 :

<ul>2010 Chevy Camaro Black 
    <li>2dr 
    <li>convertible 
    <li>6.2L 
    <li>V8 
    <li>2dr 
    <li>coupe 
    <li>3.6L 
    <li>V6 
    <li>4WD 
    <li>Crew Cab 
    <li>V10 
    <li>Tow Package</li></ul> 

을 그리고 그것은 모든 레코드에 대해이 작업을 수행

다음은 CSV 형식입니다. CSV 파일에서 관련된 레코드 만 표시하고 각 레코드의 루프를 끝내려면 정렬되지 않은 목록이 필요합니다. 제가 누락 된 부분을 알려주세요.

답변

2

루프 이전에 $input을 지우지 않으므로 CSV의 이전 행에있는 목록 항목이 계속 포함됩니다. 그냥 foreach 문 앞에

$output = ''; 

를 추가합니다.

+0

감사합니다. Barmar. 어떻게하면 CSV 테이블을 여기에서 포맷 할 수 있습니까? 나는 그것에 대한 선택권을 보지 못했다. BTW, 나는 너의 대답을 지금 시험하고있다. – Tom

+0

리터럴 코드 블록을 표시하려면 SO 편집기에서'Ctl-k '또는'{}'도구를 사용하십시오. – Barmar

+0

뛰어난! 그것은 완벽하게 작동했습니다! 고맙습니다! – Tom