找不到合适的答案,希望有人能提供帮助。基本上想要创建一个数组,然后从搜索中返回结果,例如
$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中的相关条目
答案 0 :(得分:0)
试试这个:
$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)) {
$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;
}
可缩短为:
while($row = sqlsrv_fetch_array($stmt)) {
$calarray[] = $row;
}
答案 1 :(得分:0)
也许此代码段可以解决您的问题。 我不是PHP程序员,所以没有保修。
function searchInArray($array, $keyword) {
for($i=0;$i<array.length();$i++) {
if(stristr($array[$i], $keyword) === FALSE) {
return "Found ".$keyword." in array[".$i."]";
}
}
}
答案 2 :(得分:0)
我建议如下,
col BETWEEN x AND y
staffid
和caldate
为关键像这样;
$calarray[$row['staffid'] . '-' . $row['date']][] = $row;
不确定单个职员/日期组合是否每天可以有一个或多个事件,如果不是,您可以删除[]
要检查我们是否有特定人员/日期组合的信息,请使用isset
if (isset($calarray[$staffid . '-' . $mydate]) { ... }
答案 3 :(得分:0)
将索引添加到您要查询的字段,然后将搜索移动到sql查询。您还可以在循环内进行简单过滤。因此,根据您需要的搜索,您将填充多个数组而不是一个数组。