2017-11-19 14 views
0

PHP를 사용하여 연관 배열에서 CSV 파일을 만드는 중 문제가 있습니다. 내 연관 배열은 sqlsrv_fetch_array 함수의 결과입니다.Associative Array의 PHP CSV

내가 코드를 실행하면 :

while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
    echo '<pre>'; 
    print_r($row); 
    echo '</pre>'; 
} 

을 내가 볼 수

Array 
    (
    [Username] => User1 
    [Password] => Password1 
    [DisplayName] => UserOne 
    [FirstName] => User 
    [LastName] => One 
    [Role] => Bacon 
    [HomeEmailAddress] => [email protected] 
) 
Array 
(
    [Username] => User2 
    [Password] => Password2 
    [DisplayName] => UserTwo 
    [FirstName] => User 
    [LastName] => Two 
    [Role] => Egg 
    [HomeEmailAddress] => [email protected] 
) 
Array 
(
    [Username] => User3 
    [Password] => Pasword3 
    [DisplayName] => UserThree 
    [FirstName] => User 
    [LastName] => Three 
    [Role] => Sausage 
    [HomeEmailAddress] => [email protected] 
) 

모든 좋은 찾고. 그러나 내가 가지고있는 문제는 그것을 CSV 파일로 가져 오는 것입니다. 나는 while 루프 내부 루프 ($ 키 => $ 값으로 $ 행)을 foreach 문을 사용하여, fputcsv 작업을 얻으려고 내 머리를 두드리는했던 파일이

Username,Password,DisplayName,FirstName,LastName,Role,HomeEmailAddress 
User1,Password1,UserOne,User,One,Bacon,[email protected] 
User2,Password2,UserTwo,User,Two,Egg,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 

같이 할 , 그러나 나는 아무데도 빨리 가지 않고있다. 이것은 쓸데없는 퀘스트인가? _sql_fetch_array_를 사용하여 만든 배열에서이 작업을 수행 할 수 있습니까? 내 경우 루프의 코드를 넣으면

는 :

User3,Password3,UserThree,User,Three,Sauage,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 
User3,Password3,UserThree,User,Three,Sauage,[email protected] 

어떤 힌트이나 제안이 크게 감상 할 수있다 :

$fp = fopen('file.csv', 'w'); 

foreach ($row as $key => $value) { 
fputcsv($fp, $row); 
} 

fclose($fp); 

나는 출력 csv 파일을 얻을.

+0

예상되는 출력 뒤에있는 이유를 이해할 수없는 것 같습니다. 구분 기호는 무엇이며, 2에서 시작하는 불확실한 숫자의 공백입니까? 데이터 자체에 공백이 있으면 어떻게됩니까? 이것이 CSV일까요? 고정 폭 파일 형식이 아닌? fputcsv()를 사용하는 것보다 데이터베이스 코드가 더 적절하다고 생각하는 것은 이상합니다. –

+0

빈약 한 형 태일 수도 있습니다. 왜냐하면 나는 내 머리 속의 어떤 것을 이해하지 못하기 때문이다. 나는이 물건으로 꽤 경험이 없다. –

+0

올바른 CSV가 표시됩니다. 원하는 파일 형식이 CSV로 보이지 않습니다. 정확한 사양은 무엇입니까? –

답변

0

당신은 즉 각 행을 읽고 다음 CSV 밖으로 행을 쓰기 (당신이 코드의 두 세트를 결합해야합니다.

$fp = fopen('file.csv', 'w'); 
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
fputcsv($fp, $row); 

} 

fclose($fp); 

당신이 그 일을 한 방법이 하나의 행보고 있었다 .

+0

감사합니다! 내 독서에서 foreach 루프를 사용해야한다고 생각했습니다. 머리글을 하드 코딩 할 수도 있지만, 머리글을 끌어 와서 나중에 더 유연하게 만들 수 있습니다. 그러나, 고마워요! –