배열 값 얻어오기

배열 값 얻어오기

QA

배열 값 얻어오기

본문

안녕하세요.

배열 관련해서 여쭙습니다.

MS Endpoint에서 다운받은 csv 화일을 배열에 넣었습니다.



echo "<pre>"; print_r($dataTbl);echo "</pre>";


결과가 



Array
(
    [0] => Array
        (
            [Device ID] => cxxxxxxxxe6a85
            [Device name] => DESKTOP-xxxxxxx

그런데 첫번째 레코드의 [Device ID] 값을 불러 오면 가져오지 못합니다.


echo "========>".$dataTbl[0]['Device ID'];

요리조리 검사해봐도 알 수 없어 여쭙습니다.

삽질이 힘드네요. 

 

감사합니다.

 

-----

추가:

1. "Device ID"처럼 두 단어로 되어 있지 않은 것은 잘 나옵니다.

2. csv 문서의 형식이 UTF-8 with BOM 인데 이것이 문제가 될까요?

 

 

 

 

 

이 질문에 댓글 쓰기 :

답변 2

저번 배르만 님 답변 코드 중에서 아래 코드를 수정해 보세요.

https://sir.kr/qa/473224

수정 전: $dataTbl = json_decode($dataTbl);
수정 후: $dataTbl = json_decode($dataTbl, true);

감사합니다.
이미 해보았습니다. " 의 문제가 아니고 UTF-8 BOM 문서의 문제로 보입니다.
VSCODE에서 보니 UTF-8 with BOM 형식으로 되어 있네요.

다운받은 화일의 형식을 바꿔줘야하는데...
PHP에서 가능한지 찾아보고 있습니다.
MS는 왜 이런 형식을 사용하는지....

감사합니다.

		
$file_handler = fopen($filename, "r");
$contents = fread($file_handler, filesize($filename));
fclose($file_handler);
for ($i = 0; $i < 3; $i++){
	$bytes[$i] = ord(substr($contents, $i, 1));
}
if ($bytes[0] == 0xef && $bytes[1] == 0xbb && $bytes[2] == 0xbf) {
	$file_handler = fopen($filename, "w");
	fwrite($file_handler, substr($contents, 3));
	fclose($file_handler);
	printf("%s BOM removed.<br/>n", $filename);
}


인터넷에 어떤 고수분이 남겨두었더군요.
https://www.memorylack.com/solving-bom-of-utf-8-file-encoding-problem-with-php-session-and-header/

이것을 해결하니 또 다른 문제가 생기네요. ㅠㅠ

감사합니다.

이렇게 해보는게 어떨까요?


 
// 0번만 일단 확인하는것으로 체크합니다.
$row = $dataTbl[0];
foreach($row as $key => $value) {
   echo $key ." : ".$value."<BR>";
}

 
답변을 작성하시기 전에 로그인 해주세요.
전체 125,873 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT