在PHP中搜索数组并返回结果
找不到完全正确的答案,希望有人能帮忙。基本上希望创建一个数组,然后返回搜索结果,例如在PHP中搜索数组并返回结果,php,arrays,search,calendar,Php,Arrays,Search,Calendar,找不到完全正确的答案,希望有人能帮忙。基本上希望创建一个数组,然后返回搜索结果,例如 $tsql = "SELECT date, staffid, ID,status, eventid, auditid from maincalendar"; $params = array(); $options = array( "Scrollable" => SQLSRV_CURSOR_KEYSET ); $stmt = sqlsrv_query( $conn, $tsql , $param
$tsql = "SELECT date, staffid, ID,status, eventid, auditid from maincalendar";
$params = array();
$options = array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
$stmt = sqlsrv_query( $conn, $tsql , $params, $options);
$calarray=array();
while($row = sqlsrv_fetch_array($stmt)) {
$rowresult = array();
$rowresult["status"] = $row['status'];
$rowresult["eventid"] = $row['eventid'];
$rowresult["caldate"] = $row['date'];
$rowresult["staffid"] = $row['staffid'];
$rowresult["ID"] = $row['ID'];
$rowresult["auditid"] = $row['auditid'];
$calarray[] = $rowresult;
}
然后,我想搜索与“caldate”和“staffid”匹配的值,并返回$calarray中的相关条目
$matches = array();
$caldate = //your desired date;
$staffid = //your desired id;
foreach($calarray as $k => $v){
if(in_array($caldate, $v['caldate']) && in_array($staffid, $v['staffid'])){
$matches[] = $calarray[$k];
}
}
$matches应该是和数组,包含您想要的所有结果
此外: 可缩短为:
while($row = sqlsrv_fetch_array($stmt)) {
$calarray[] = $row;
}
也许这个代码snipplet解决了您的问题。 我不是PHP程序员,所以没有沃伦蒂
function searchInArray($array, $keyword) {
for($i=0;$i<array.length();$i++) {
if(stristr($array[$i], $keyword) === FALSE) {
return "Found ".$keyword." in array[".$i."]";
}
}
}
函数searchInArray($array,$keyword){
对于($i=0;$i我建议如下:
- 使用x和y之间的
col获取当前显示月份所需的所有数据
- 将它们添加到PHP中的数组中,键为
staffid
和caldate
诸如此类
$calarray[$row['staffid'] . '-' . $row['date']][] = $row;
不确定单个staffid/date组合是否每天可以有一个或多个事件,如果没有,您可以删除[]
要检查我们是否有特定标记/日期组合的信息,请使用isset
if (isset($calarray[$staffid . '-' . $mydate]) { ... }
向要查询的字段添加索引,然后将搜索移动到sql查询。您还可以在循环中进行简单筛选。因此,您将根据需要的搜索填充多个数组,而不是一个数组。您不能将sql更改为具有其中caldate=?和/或staffid=?
?您知道可以执行$c吗阿拉雷=$row并保存7行代码?xdhi-基本上是尝试创建一个简单的日历,在左侧显示员工列表,然后在表中从左到右显示日期-然后我想搜索每个日期,如果员工已预订,则在相应的单元格中显示事件。如果我每次都为每个单元格运行查询,效果很好,但速度很慢,因此要查找faster方法。我想如果我能做一个SELECT语句并将其放入数组中,然后每次都查询数组,这样可能会加快它的速度?UnholyRanger-没错,这就是我现在正在做的,但表中的60名工作人员每天运行查询似乎需要一段时间,所以寻找加速的解决方案!aleation-不,我没有-你能告诉我是一个noob!?这太棒了。你知道有一个原生php函数可以实现你创建的函数吗?xD太漂亮了!所以如果我想从结果中返回“status”,我该如何得到这个值?谢谢$calarray[$staffid.-'.$mydate]['status'],或者如果你使用额外的[]
$calarray[$staffid.-'.$mydate][index]['status']print\u r
和var\u dump
是你的朋友非常感谢Hank,这非常有效,现在加载日历的速度快了十倍-加上只查询数据库一次,而不是31(天)x 60名员工=超过1800次!每天都是上学日……)
if (isset($calarray[$staffid . '-' . $mydate]) { ... }