在PHP中搜索数组并返回结果
找不到正确的答案,所以希望有人可以提供帮助。基本上想创建一个数组,然后返回搜索结果,例如在PHP中搜索数组并返回结果
$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相关条目中
我建议以下,
- 取需要你是显示当前月的所有数据,使用
col BETWEEN x AND y
- 它们添加到PHP中的数组,
staffid
和caldate
关键
就像这样;
$calarray[$row['staffid'] . '-' . $row['date']][] = $row;
不知道单,STAFFID /日期组合可以每天一个或多个事件,如果不是你可以删除[]
要检查,如果我们为特定的,STAFFID /日期组合有信息,使用isset
if (isset($calarray[$staffid . '-' . $mydate]) { ... }
这是美丽的!所以如果我想从结果中返回'状态' - 我如何得到这个值?谢谢 – user2156900 2013-03-11 13:35:42
$ calarray [$ staffid。 ' - '。 $ mydate] ['status'],或者如果你使用额外的[]'$ calarray [$ staffid。 ' - '。 $ mydate] [_ index _] ['status'] – hank 2013-03-11 13:38:31
'print_r'和'var_dump'是你的朋友 – hank 2013-03-11 13:38:59
试试这个:
$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];
}
}
$比赛应该是和阵列与你想要的所有结果。
也:
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;
}
也许这个代码snipplet解决您的问题。 我不是一个PHP程序员,所以没有warrenty。
function searchInArray($array, $keyword) {
for($i=0;$i<array.length();$i++) {
if(stristr($array[$i], $keyword) === FALSE) {
return "Found ".$keyword." in array[".$i."]";
}
}
}
添加索引你要查询的字段,然后将搜索到的SQL查询。您也可以在循环内进行简单的过滤。因此,根据您需要的搜索,您将填充多个数组而不是一个数组。
难道你不能改变SQL有'WHERE caldate =? AND/OR staffid =?'? – UnholyRanger 2013-03-11 13:18:01
你知道你可以做$ calarray [] = $ row来保存7行代码吗? xd – aleation 2013-03-11 13:19:05
嗨 - 基本上试图创建一个简单的日历,左边是工作人员列表,然后是从左到右的日期 - 然后我想搜索每个日期,如果工作人员已预订,则在相应的单元格中显示事件。如果我每次为每个单元运行查询,但运行速度很慢,所以查找速度更快的方法。想过如果我可以做一个SELECT语句并将其放入数组,然后每次查询数组可以加快它? – user2156900 2013-03-11 13:19:58