代码似乎存在一些问题,其中一行跳过了结果。
例如,如果我写:642641 结果应该是:“642641”,“testgatan 1” 但相反,它显示:“762755”,“testgatan 2”
我如何修复,以便实际提交输入?
我找到了一个链接供您查看我的意思:http://snaland.com/herestheidnummer/test.html
这是csv:
ID,Gata
"642641","testgatan 1"
"762755","testgatan 2"
"346468","testgatan 3"
"114564","testgatan 4"
"758925","testgatan 5"
我使用了来自Find if a value exist in a CSV file with PHP的PHP代码 - Fred -iii -
并修改如下:
<?php
$search = $_GET['subject'];
$lines = file('http://snaland.com/herestheidnummer/anlaggningsnmr.csv');
$line_number = false;
while (list($key, $line) = each($lines) and !$line_number) {
$line_number = (stripos($line, $search) !== FALSE);
}
if($line_number){
echo "Found result: " .$line;
}
else{
echo "Can't find result: " .$search;
}
?>
Html表格:
<form name="form" action="http://snaland.com/herestheidnummer/verifiera.php" method="get">
<input type="text" name="subject" id="subject" value="000000">
<input type="submit" value="Submit">
</form>
答案 0 :(得分:0)
你的问题是while循环中的条件。在检查!$ line_number之前执行对键和列表的赋值。如果你交换这两个条件,它应该工作
while (!$line_number and list($key, $line) = each($lines) ) {
$line_number = (stripos($line, $search) !== FALSE);
}
答案 1 :(得分:0)
每个都会使数组光标前进,因此当您查找结果时,下一个值已经加载。更多信息http://php.net/manual/en/function.each.php。
更简单的解决方案是用以下代码替换你的循环:
for($i = 0; $i<count($lines);$i++){
if(stripos($lines[$i], $search) !== false){
$line = $lines[$i];
break;
}
}
关于if:
if($line){
echo "Found result: " .$line;
}