Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中搜索数组并返回结果_Php_Arrays_Search_Calendar - Fatal编程技术网

在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]) { ... }