在PHP中搜索数组并返回结果

时间:2013-03-11 13:14:49

标签: 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 , $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中的相关条目

4 个答案:

答案 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
  • 获取您要显示的当月所需的所有数据
  • 将它们添加到PHP中的数组中,staffidcaldate为关键

像这样;

$calarray[$row['staffid'] . '-' . $row['date']][] = $row;

不确定单个职员/日期组合是否每天可以有一个或多个事件,如果不是,您可以删除[]

要检查我们是否有特定人员/日期组合的信息,请使用isset

if (isset($calarray[$staffid . '-' . $mydate]) { ... }

答案 3 :(得分:0)

将索引添加到您要查询的字段,然后将搜索移动到sql查询。您还可以在循环内进行简单过滤。因此,根据您需要的搜索,您将填充多个数组而不是一个数组。