我有一个 SELECT 查询,最多可以返回 1000 个名称 - 更有可能返回 300-400 个名称。
我想将输入字符串与 SELECT 查询返回的数组中的名称进行比较。
我有两个问题:
- for 循环需要多长时间才能遍历数组(所有 1000 个名称)以查找是否存在匹配值?和
- 有没有办法在找到匹配项后立即终止循环?(假设在第 10 个名称上找到匹配项,遍历其余名称将是一种浪费。是否有更多匹配项无关紧要 - 只需命中第一个就足以满足我的目的。)
我尝试过返回和退出,但两者都不完全按照我想要的方式工作。
这是我正在运行的代码来测试这个想法:第一个 php 文件包含名称数组
<?php
$names=array("R","A","V");
$arrlengths=count($names);
?>
并包含在第二个文件中。
<?php
include 'test-2nd-include.php';
//the above file contains an array with three names
//it also contains the length of the array in the arrlengths variable
//in the test case we are using a name assigned to a variable in this file
//however, when used on the registration page, it will be a value that has come through $_POST
$rr = "A";
//a test variable that is initially = 0 but will be incremented if value is found in array
$ohno = 0;
for($xx=0;$xx<$arrlengths;$xx++)
{
echo "$ names [ $xx ] ", $names[$xx];
echo "<br>";
if ($names[$xx] ==$rr) {
// if the value is found then the test variable is set t
$ohno = 1;
}
}
if ($ohno > 0){
echo " $rr already exists in our members list" ;
}
else {
echo "Congratulations! $rr is still available!" ;
}
?>
我所看到的是,如果我$ohno = 1;
在最后的消息没有得到处理之后使用 return 或 exit。如果我将其if ($ohno > 0){......$rr is still available!" ;}
移到 for 循环中,结果真的很奇怪!
我确定我错过了一些东西,但是在盯着它看了整个下午之后,我仍然找不到一种方法让代码在遇到第一个匹配项后停止运行并显示适当的消息——无论是在找到匹配项时还是在它找到匹配项时没有。
这就是第一个问题的原因!从长远来看,我花在这方面的时间是否值得节省服务器时间/处理?毕竟,对于最多 1000 个预期用户,这段代码可能会在一个月左右的时间内运行大约 300-400 次?!?