CSV에서 특정 값을 읽을 수 있는지 궁금해서 행 번호와 열 번호를 지정했습니다.PHP를 사용하여 CSV의 'x'번째 행과 'y'번째 열에서 값을 읽는 방법은 무엇입니까?
행 번호 44
과 열 번호 K
의 데이터를 읽으려고한다고 가정 해 봅시다.
전체 CSV를 구문 분석하고 싶지 않습니다. 특정 데이터를 읽는 방법?
희망 사항 질문이 있으십니까? 어떤 대답이라도 감사 할 것입니다.
CSV에서 특정 값을 읽을 수 있는지 궁금해서 행 번호와 열 번호를 지정했습니다.PHP를 사용하여 CSV의 'x'번째 행과 'y'번째 열에서 값을 읽는 방법은 무엇입니까?
행 번호 44
과 열 번호 K
의 데이터를 읽으려고한다고 가정 해 봅시다.
전체 CSV를 구문 분석하고 싶지 않습니다. 특정 데이터를 읽는 방법?
희망 사항 질문이 있으십니까? 어떤 대답이라도 감사 할 것입니다.
CSV 파일은 인덱스가 없다, 그래서 당신은 적어도 44 라인에 가서 검색해야합니다 :
$file = new SplFileObject($path);
$file->setFlags(SplFileObject::READ_CSV);
$single = new LimitIterator($file, $offset = 43, $limit = 1);
list($row) = iterator_to_array($single, false);
$k = 10;
echo $row[$k];
어떻게 든이 오류에 직면 해 있습니다. Catchable fatal error : LimitIterator :: __ construct()에 전달 된 인수 1은 인터페이스 반복기를 구현해야합니다. 정수는 F : \ Source - WebAutomation \ reuters \ test.php에서 제공됩니다. – user1518659
감사합니다. 내가 59 행을 원한다고 가정 해 봅시다. 'LimitIterator'를 다른 오프셋으로 다시 한 번 __construt해야합니까? – user1518659
아니요. 그러면 NoRewindIterator에서'$ file'을 감싸고 43에서 오프셋을 만든 다음 15에서 오프셋하여 44에서 59로 옮깁니다. 그렇게 할 때 원하지 않는 부작용이 생길 수 있습니다 (잘못된 선, 예를 들어 처음부터 다시 시작하는 경우), 자세한 내용은 http://stackoverflow.com/a/13828745/367456을 참조하십시오 (하지만 그렇지 않을 수도 있습니다). – hakre
Here is a function that accepts the path to a CSV file, and inserts all records to the given MySQL table, paying attention to the column names:
<?php
function csv_file_to_mysql_table($source_file, $target_table, $max_line_length=10000) {
if (($handle = fopen("$source_file", "r")) !== FALSE) {
$columns = fgetcsv($handle, $max_line_length, ",");
foreach ($columns as &$column) {
$column = str_replace(".","",$column);
}
$insert_query_prefix = "INSERT INTO $target_table (".join(",",$columns).")\nVALUES";
while (($data = fgetcsv($handle, $max_line_length, ",")) !== FALSE) {
while (count($data)<count($columns))
array_push($data, NULL);
$query = "$insert_query_prefix (".join(",",quote_all_array($data)).");";
mysql_query($query);
}
fclose($handle);
}
}
function quote_all_array($values) {
foreach ($values as $key=>$value)
if (is_array($value))
$values[$key] = quote_all_array($value);
else
$values[$key] = quote_all($value);
return $values;
}
function quote_all($value) {
if (is_null($value))
return "NULL";
$value = "'" . mysql_real_escape_string($value) . "'";
return $value;
}
?>
이 모호한 답변은 실제로 무엇을 의미합니까? 난 그냥 'x'번째 행과 'y'번째 열에서 데이터를 읽고 싶다. 답이 관련성이 있습니까? – user1518659
귀하의 질문은 명확 많이 부족하지 않습니다. 하지만 지금까지 해왔 던 코드가 부족합니다. 연구. – hakre
CSV에서 코드를 읽었습니다. 그러나 모든 나의 연구는 CSV에서 한 줄씩 파싱하는 방식으로 이어집니다. 나는 뇌졸중에 필요한 데이터를 단순히 읽을 수있는 방법을 찾고있다. – user1518659
CSV 파일에는 색인이 없으므로 구문 분석을 시작할 줄이있는 파일 내부의 이진 위치로 이동할 수 있습니다. 그러나 'SplFileObject'를 사용하면 버퍼링 된 읽기 기능을 활용할 수 있습니다. – hakre