2010-03-11 4 views
1

는 기본적으로, 나는이 벌금을 할 수있는 사용자가 CSV 파일을 업로드하고 업로드 할 것을 열을 선택할 수있는 시스템/공정PHP, fopen을하고 foreach 문을 사용하여

을 만들고 싶어 별도의 배열로 CSV 열 , 하지만 CSV CSV에 따라 다를 수 열의 개수 .... 보낸

예는 = "1,2,4"[] 촬상 나가 어레이에서 고른 열을 저장할 수

; // 1,2,3,4 열에서 쉼표로 구분되거나 어쨌든 나는 원합니다.

하지만 어떻게 list (1,2,4) = explode (",", theData [])와 같은 것을 사용할 수 있습니까? 난 또는 1,2,3,4- 동적 거기 1,2,4-를로드하고 제가

3.

답변

0

무시해

잘 CSV는 같은 2 차원 어레이의 일종 행 인덱스와 열 인덱스가 있습니다.

먼저 줄 바꿈 (\ n)을 분할하여 모든 행을 분리하십시오. 그런 다음 각 행을 쉼표로 구분해야합니다. 첫 번째 행에는 열 이름이 있습니다. 이 쉽게 자신을 코딩 할 수있는 모든

...

또는 당신이 fgetcsv 기능

기능을 사용할 수는에 설명됩니다 : 당신은 '돈의 열을 설정 해제 할 수 http://php.net/manual/en/function.fgetcsv.php

0

각 행 t 필요 :

$theData = array(
    array('col1', 'col2', 'col3', 'col4', 'col5'), 
    array('col1', 'col2', 'col3', 'col4', 'col5'), 
    array('col1', 'col2', 'col3', 'col4', 'col5') 
    ); 
$picked = '1, 3, 5'; 

$totalColumns = count($theData[0]); 
$columns = explode(',', $picked); 
foreach($theData as $k => &$thisData) { 
    for($x = 1; $x < $totalColumns + 1; $x++) { 
     if(! in_array($x, $columns)) { 
      unset($thisData[$x - 1]); 
     } 
    } 
} 

0 조심 for 루프 및 unset의 인덱스 조정 - 이는 예제에서 0이 아닌 인덱스가 사용 되었기 때문입니다.

+0

th 여기에 무슨 일이 일어나는가 : foreach ($ theData as $ k => & $ thisData) { – Antigirl

+0

변수가 참조로 전달되는 표준 foreach 루프 - 일반적으로 PHP는 foreach를 통해 배열 복사본을 만들고 참조를 사용합니다 (즉 실제 변수에 대한 링크) $ thisData의 설정을 해제하고 $ theData에서 해당 변수를 제거 할 수 있습니다. 그렇지 않다면 http : //www.php를 확인하십시오.net/manual/ko/language.references.php – Andy

0

array_intersect_key() : "모든 인수에있는 키가있는 array1의 모든 항목을 포함하는 배열을 반환합니다."

http://www.php.net/manual/en/function.array-intersect-key.php

그래서 먼저 선, 예를 들어,로 데이터 라인을 처리해야 예

$data[column] = array(entries): 

처럼 보이는 배열 :

$selected = array(1,2,4); 

:

$data = array(
    1 => array (
    entry1, 
    entry2, 
    etc 
), 
    2 => etc 
);

그런 다음 당신이 거기에 열 사용자를 보여, 사용자는 자신이 사용하기 좋아하는 열, 예를 선택 그런 다음 교차를 수행하여 선택한 열이있는 배열을 가져옵니다.

$use = array_intersect_key($data, $selected);