1

我的条码扫描器生成这样的文件:
03/01/2000-12:59:49-07-21-1229749
03/01/2000-12:59:51-07-0 1 1 0
03/01/2000- 12:59:55-07-22-1229749
03/01/2000-12:59:57-07-0 1 1 1

第 1 行包含我需要的 id 21
第 2 行是我需要的位置 0 1 1 0
第 3 行又是 id 22
第 4 行又是位置 0 1 1 1

该文件可能包含 100 行

阅读后我更新数据库,如:
mysql_query("UPDATE parts SET locatie = '$locatie_regel_2' WHERE id = '$id_regel_1'");

到目前为止,我有我的脚本

$file = file_get_contents('C:\test\BARCODE.TXT');
$strip = explode("\n", $file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

$regel_1_a = $strip[0];
$regel_1_b = explode(':', $regel_1_a);
$regel_1_c = explode('-', $regel_1_b[2]);
$id_regel_1 = $regel_1_c[2];

//echo $id_regel_1;

$regel_2_a = $strip[1];
$regel_2_b = explode(':', $regel_2_a);
$regel_2_c = explode('-', $regel_2_b[2]);
$locatie_regel_2 = $regel_2_c[2];

//echo $locatie_regel_2;

我认为它可以通过循环或其他方式处理,但我无法让它工作..
欢迎任何帮助

4

3 回答 3

1

file将从那里为您提供一个文本文件数组,您可以读取该数组与您需要的数据配对:

<?php
// load your database information here otherwise the mysql_query will not work.

$data = file('C:\test\BARCODE.TXT', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
$total = count($data) - 1;
for ($i = 0; $i < $total; ++$i)
{
    $parts = explode('-', $data[$i]);
    $id = $parts[count($parts) - 2];

    $i++;
    $parts = explode('-', $data[$i]);
    $location = array_pop($parts);

    mysql_query("UPDATE parts SET locatie = '$location' WHERE id = '$id'");
}

for假设您的数据从该id行开始,并且下一行始终是location,它将以 2 的步骤读取数据。

于 2013-07-28T03:29:35.093 回答
0

我希望这会有所帮助:

$a = array();
$file = file_get_contents('C:\test\BARCODE.TXT');
foreach ( $file as $content ) {
    $a[] = array_filter(array_map("trim", explode("\n", $content)));
}

for($i=0;$i<$a.count();$i++){
$a[i][0] = $strip[0];
$a[i][1] = explode(':', $a[i][0]);
$a[i][2] = explode('-', $a[i][1][2]);
$a[i][3] = $a[i][2][2];

    if(i%2!=0)
       mysql_query("UPDATE parts SET locatie = '$a[i][3]' WHERE id = '$a[i-1][3]'");
}
于 2013-07-28T03:16:27.697 回答
-1

FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 参数应该是 file() 函数的一部分,而不是爆炸。

$strip = file('C:\test\BARCODE.TXT',FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

这应该使用 $strip 创建您要查找的数组。

for ($i=0;$i<sizeof($strip);$i+=2) { //process strip[i]

// process strip[i+1] }

于 2013-07-28T03:01:13.167 回答