0

MySQL クエリを使用して値の配列を作成したら、すべての値が特定の値以上かどうかを確認する必要があります。これは、ホテルの空室状況を確認するためのものです。

まず、MySQL クエリを実行します。

foreach( $datearray as $value ) {
$query_avail = "SELECT cupo, ex_cupo.room_id FROM ex_cupo JOIN ex_rooms ON ex_cupo.room_id=ex_rooms.room_id  AND ex_rooms.room_id = '$room_id' AND dt = '$value'";
$avail = mysql_query($query_avail, $MySQL_extranet) or die(mysql_error());
$row_avail = mysql_fetch_assoc($avail);
   $availresult[] = $row_avail['cupo'];
}

"Cupo" は特定の日付に利用可能な部屋数であるため、$availresult は日付範囲で利用可能な部屋数の配列になります。

誰かがこれらの日付に (たとえば) 2 つの部屋を予約したい場合、配列の各値が少なくとも 2 であることを確認する必要があります。たとえば、範囲内に 5 つの日付があり、それらが 2、2、1、 2, 2, false を返す必要がありますが、2, 2, 2, 2, 2 または 2, 2, 3, 2, 2 の場合は true を返す必要があります。

それ、どうやったら出来るの?(私はそれを十分に説明したことを願っています。)

明らかに 2 の選択は単なる例です。通常は $numrooms という変数になります。

4

5 に答える 5

3
$testArray = array(2,2,2,2,1,2);

$valid = array_reduce(
    $testArray,
    function ($match, $value) {
        return $match && ($value >= 2);
    },
    TRUE
);
var_dump($valid);

編集

$numrooms を渡す方法:

$testArray = array(2,2,2,2,1,2);
$numrooms = 2;

$valid = array_reduce(
    $testArray,
    function ($match, $value) use ($numrooms) {
        return $match && ($value >= $numrooms);
    },
    TRUE
);
var_dump($valid);
于 2012-12-20T22:50:24.110 に答える
2

次のような条件として、部屋の数をSQLステートメントに渡す必要があります。

$query_avail = "SELECT cupo, ex_cupo.room_id FROM ex_cupo
  JOIN ex_rooms ON   ex_cupo.room_id=ex_rooms.room_id  AND
    ex_rooms.room_id = '$room_id' AND dt = '$value' WHERE cupo > 1";

ナンバーワンはPHPが渡した値になる可能性があるためです。

于 2012-12-20T22:48:45.727 に答える
1

これを SQL レベルで実行できる場合 (Andy が提案したように)、それが最適なオプションです。ただし、PHP でこれを行う必要がある場合は、配列を簡単に反復処理し、許容される最小量を下回る値があればフラグを false に設定できます。

$minimum_val = 2;
$enough_rooms = true;
foreach($availresult as $item) {
  if ($item < $minimum_val) {
    $enough_rooms = false;
  }
}
于 2012-12-20T22:47:50.873 に答える
0

答えてくれたみんなに感謝します。私は今自分の解決策を持っていると思います、そして私は前進しています。皆さん、ハッピークリスマス。

于 2012-12-22T11:10:22.750 に答える