$file = fopen("test.txt","r");
while($line = fgets($file)) {
$line = trim($line);
list($model,$price) = preg_split('/\s+/',$line);
if(empty($price)) {
$price = 0;
}
$sql = "UPDATE products
SET products_price=$price
WHERE products_model='$model'";
// run the sql query.
}
fclose($file);
这样的txt文件:
model price
LB2117 19.49
LB2381 25.99
1,list($model,$price) = preg_split('/\s+/',$line);
的含义是什么
我知道preg_split
就像explode
,但我不知道上述行的参数含义是什么
2,如何跳过第一条记录。
答案 0 :(得分:1)
它正在获取preg_split
的结果并将其分配给变量$model
和$price
。您正在查看解析算法。对不起,如果这还不够。我很难理解这个问题。
此外,如果我正确阅读,除非您在数据库中有一个模型定义为“模型”,否则无需跳过第1行。
但如果你想出于某种原因,你可以添加一个计数器......
$i = 0;
while($line = fgets($file)) {
if($i > 0)
{
$line = trim($line);
list($model,$price) = preg_split('/\s+/',$line);
if(empty($price)) {
$price = 0;
}
$sql = "UPDATE products
SET products_price=$price
WHERE products_model='$model'";
// run the sql query.
}
$i++;
}
答案 1 :(得分:1)
这是一种语言结构,允许您一次分配多个变量。您可以将其视为数组解包(preg_split
返回一个数组)。所以,当你这样做时:
<?php
list($a, $b) = explode(".","a.b");
echo $a . "\n";
echo $b . "\n";
你会得到:
a
b
列表中的元素少于数组是可以的,数组中的多余元素被忽略,但是在数组中包含不足的元素会给你一个未定义的索引错误。例如:
list($a) = explode(".","a.b"); // ok
list($a,$b,$c) = explode(".","a.b") // error
答案 2 :(得分:0)
我不知道你的意思是跳过第一条记录但是......
$file = fopen("test.txt","r"); // open file for reading
$first = true;
while($line = fgets($file)) { // get the content file
if ($first === true) { $first = false;}//skip the first record
else{
$line = trim($line); // remove the whitespace before and after the test
// not in the middle
list($model,$price) = preg_split('/\s+/',$line); // create two variable model and price, the values are from the preg_split \s means whitespace, tab and linebreak
if(empty($price)) { // if $price is empty price =0
$price = 0;
}
$sql = "UPDATE products // sql update
SET products_price=$price
WHERE products_model='$model'";
// run the sql query.
}
}
fclose($file); //close the file