循环文本文件中的两列

时间:2011-02-14 13:13:52

标签: php text for-loop

这是一个名为data.txt

的示例文本文件
john engineer
mathew IT consultant
elan Vice president
emili administrator
joicee nurse

$lines = file('data.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

    foreach ($lines as $names => $designation) { 

    //I am not sure above one is right?? then what??
    }

我希望将其加载到两个变量中

$names = john;
$designation = Engineer;

并循环播放......

4 个答案:

答案 0 :(得分:3)

$lines中的行不是'name'=>默认情况下'指定'地图;你必须手动分开线。

您可以使用explode。您必须添加2作为可选的“限制”参数,以确保线条仅在第一个空格处分解:

$lines = file('data.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

foreach ($lines as $line) {
  list($name, $designation) = explode(' ', $line, 2);
}

没有限制,"elan Vice president"之类的行会被分解为array("elan", "Vice", "president")而不是array("elan", "Vice president")

答案 1 :(得分:2)

如果您的格式始终使用空格作为$name$designation之间的分隔符,则可能会有效

foreach ($lines as $line_number => $line) 
{
  $space = strpos($s, ' ');
  $name  = substr($s, 0, $space);
  $designation = substr($s, $space+1);
}

答案 2 :(得分:0)

如果“名称”和“名称”与制表分开,您可以使用以下内容:

foreach ($lines as $line) { 
  list($name, $designation) = explode("\t", $line);
  ...
}

答案 3 :(得分:0)

Tty以下代码。它的工作::

$lines = file('new.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach ($lines as $line) {
list($name[], $job[]) = explode(' ', $line,2);
}
foreach($name as $n=>$value)
 echo "Name= ".$name[$n]." Job=".$job[$n]."<br>";