创建一个包含不同行上变量的循环

时间:2013-07-28 02:42:57

标签: php

我的条码扫描器会生成如下文件:
3月1日/ 2000年12:59:49-07-21-1229749
03/01 / 2000-12:59:51-07-0 1 1 0
3月1日/ 2000年12:59:55-07-22-1229749
03/01 / 2000-12:59:57-07-0 1 1 1

第1行包含我需要的身份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;

我认为它可以处理bij循环或其他什么,但我不能让它工作..
欢迎任何帮助

3 个答案:

答案 0 :(得分: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为步骤读取数据。

答案 1 :(得分: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]'");
}

答案 2 :(得分:-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] }