0

正しい答えが見つからないので、誰かが助けてくれることを願っています。基本的に、配列を作成してから、検索結果を返します。

$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

4 に答える 4

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;
}
于 2013-03-11T13:26:22.930 に答える
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."]";
        }
     }
}
于 2013-03-11T13:26:48.227 に答える
0

私は次のことを提案します、

  • を使用して、表示している当月に必要なすべてのデータを取得しますcol BETWEEN x AND y
  • キーを使用しstaffidて、PHPの配列にそれらを追加しますcaldate

そのようなもの;

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

単一のスタッフIDと日付の組み合わせで1日に1つ以上のイベントを実行できるかどうかわからない場合は、削除できます。[]

特定のスタッフIDと日付の組み合わせに関する情報があるかどうかを確認するには、次を使用します。isset

if (isset($calarray[$staffid . '-' . $mydate]) { ... }
于 2013-03-11T13:26:52.267 に答える
0

クエリするフィールドにインデックスを追加してから、検索をSQLクエリに移動します。ループ内で簡単なフィルタリングを行うこともできます。したがって、必要な検索に基づいて、1つではなく複数の配列を作成します。

于 2013-03-11T13:27:58.930 に答える