答えて
あなたは、ファイルAとファイルB
解析ファイルAを有し、行ごとにオブジェクトを作成して、一つのオブジェクトに一列のコンテンツを格納します。オブジェクトを作成している間、配列にそれらを格納します。
今、あなたは二つの配列、ファイルAの行のすべてのデータを格納するための最初のアレイ、およびB.
のための別の配列を持っている今、あなたがする必要があるファイルBだから、
についても同じことを行いますあなたの最初の配列、最初に配列Aの各オブジェクトを繰り返し、配列Bをスキャンし、配列Aのすべての要素がこれを渡す場合、Bに同じオブジェクトがあるかどうかを確認します。それは彼らが同一であることを意味します。それ以外の場合は中断します。
私は、これは主ベイダーが話すそのうち実際のコードだと思う:
#!/usr/bin/php
<?
$strFile1 = $argv[1];
$strFile2 = $argv[2];
function parseData($strFilename) {
$strAllData = file($strFilename);
foreach($strAllData as $intLineNum => $strLineData) {
$arrLineData = explode(',',$strLineData);
}
return $arrLineData;
}
$arrFile1 = parseData($strFile1);
$arrFile2 = parseData($strFile2);
$intRow = 0;
foreach($arrFile1 as $intKey => $strVal) {
if(!isset($arrFile2[$intKey]) || ($arrFile2[$intKey] != $strVal)) {
exit("Column $intKey, row $intRow of $strFile1 doesn't match\n");
}
$intRow++;
}
print "All rows match fine.\n";
?>
これは古かったのですが、 '$ argv [1]'とは何でしょうか? – BandonRandon
Bandonはあなたの* nixボックスのファイル(上記の "compare-csvs.php"のような)に上記のコードをすべて保存して実行可能にします( 'chmod + x compare-csvs.php') 。その後、 "compare-csv.php"を以下のように呼び出します: 'compare-csvs.php /path/to/first-csv.csv/path/to/sec second-csv.csv'ハッピーハッキング! – rICh
RLCHによってコード例の問題のビット、すなわち
- は、複数行を扱うことができない、ありますCSV
- は一方向のみの違い
- 第1の差分
オペアンプでは十分かもしれませんが、2つのマルチラインCSVファイルを適切に比較する方法を探していました。 (複数の行にまたがるデータを含むような複数行)だから私は時間を費やして実際に作成しました。なぜ共有しないのかと考えました。たぶん誰かのために少し時間を節約するかもしれない。今
、私はコマンドラインからPHPを使用していないので、あなたがしたい場合は、私が提案することをあなたが扱う入力と出力を変更
(これは、ブラウザでそれを使用できるようにHTMLを出力します)使用法; は、二つのパラメータで コールにディレクトリ内のスクリプトを比較するためのスクリプトやファイルを置くF1とF2 例えばcompareCSV.php?F1 = file1.csv & F2 = file2.csv
<?php
//---- init
$strFileName1=isset($_REQUEST['f1'])?$_REQUEST['f1']:'';
$strFileName2=isset($_REQUEST['f2'])?$_REQUEST['f2']:'';
if (!$strFileName1) { die("I need the first file (f1)"); }
if (!$strFileName2) { die("I need the second file (f2)"); }
try {
$arrFile1 = parseData($strFileName1);
$arrFile2 = parseData($strFileName2);
} catch (Exception $e) {
die($e->getMessage());
}
$rowCount1=count($arrFile1);
$rowCount2=count($arrFile2);
$colCount1=count($arrFile1[0]);
$colCount2=count($arrFile2[0]);
$highestRowCount = $rowCount1>$rowCount2 ? $rowCount1:$rowCount2;
$highestColCount = $colCount1>$colCount2 ? $colCount1:$colCount2;
$row = 0;
$err = 0;
//---- code
echo "<h2>comparing $strFileName1 and $strFileName2</h2>";
echo "\n<table border=1>";
echo "\n<tr><th>Err<th>Row#<th>Col#<th>Data in $strFileName1<th>Data in $strFileName2";
while($row<$highestRowCount) {
if(!isset($arrFile1[$row])) {
echo "\n<tr><td>Row missing in $strFileName1<th>$row";
$err++;
} elseif(!isset($arrFile1[$row])) {
echo "\n<tr><td>Row missing in $strFileName2<th>$row";
$err++;
} else {
$col=0;
while($col<$highestColCount) {
if (!isset($arrFile1[$row][$col])) {
echo "\n<tr><td>Data missing in $strFileName1<td>$row<td>$col<td><td>".htmlentities($arrFile2[$row][$col]);
$err++;
} elseif (!isset($arrFile2[$row][$col])) {
echo "\n<tr><td>Data missing in $strFileName1<td>$row<td>$col<td>".htmlentities($arrFile1[$row][$col]) ."<td>";
$err++;
} elseif ($arrFile1[$row][$col] != $arrFile2[$row][$col]) {
echo "\n<tr><td>Data mismatch";
echo "<td>$row <td>$col";
echo "<td>".htmlentities($arrFile1[$row][$col]);
echo "<td>".htmlentities($arrFile2[$row][$col]);
$err++;
}
$col++;
}
}
$row++;
}
echo "</table>";
if (!$err) {
echo "<br/>\n<br/>\nThe two csv data files seem identical<br/>\n";
} else {
echo "<br/>\n<br/>\nThere are $err differences";
}
//---- functions
function parseData($strFilename) {
$arrParsed = array();
$handle = fopen($strFilename , "r");
if ($handle) {
while (!feof($handle)) {
$data = fgetcsv($handle , 0 , ',' , '"');
if (empty($data)) continue; //empty row
$arrParsed[]=$data;
}
fclose($handle);
} else {
throw new Exception("File read error at $strFilename");
}
return $arrParsed;
}
?>
- 1. 2つのcsvファイルの内容を比較する
- 2. PHPの2つのCSVファイルをメモリ不足で比較する
- 3. 2つのファイルの内容を比較する#
- 4. 2つのCSVファイルを比較し、元
- 5. 2列のCSVファイルの比較
- 6. 比較タプル内容
- 7. 2つのExcelファイルとCSVファイルを比較する方法
- 8. データベーステーブル内容の比較
- 9. 行の内容を比較するツール
- 10. テキストファイルの内容を比較する
- 11. Powershell - フォルダの内容を比較する
- 12. 2つのリストの内容を比較する
- 13. 2つのcassandraキースペースの内容を比較する方法
- 14. csvファイルとpySparkの比較
- 15. PythonのCSVkit比較CSVファイル
- 16. ファイルの内容を比較するためのperlコード
- 17. 、どのように2つのcsvファイルを比較する?
- 18. CSVのデータとフォルダ内のファイルを比較するPoweshell
- 19. ページまたはCSVファイルのキーワードを比較する:PHP?バッシュ?
- 20. シェルスクリプトとファイルの内容を文字列で比較する
- 21. rubyファイルの内容と文字列を比較する
- 22. Pythonで2つのcsvファイルを比較する
- 23. 2つのCSVファイルを比較するには?
- 24. 2つのcsvファイルとpython pandasを比較する
- 25. 2つの.csvファイルを比較するには?
- 26. 2つのLDAPサーバーの内容を比較します
- 27. jmeterの2つのcsvファイルを比較します
- 28. 2つのCSVファイルの行データをプログラムで比較します
- 29. C言語の2つのchar配列の内容を比較
- 30. 内容を比較する2次元ポインタC
あなたはできませんでした'diff'を使ってコマンドラインでそれらを比較するだけですか? –