什么是代码含义?

时间:2011-11-04 22:20:14

标签: php

$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,如何跳过第一条记录。

3 个答案:

答案 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