1

2 つの配列を取得しました。1 つは名前付き$requirementsで、複数の値のペアを保持できます。例:

array
  'name1' => int 1000

また:

array
  'name1' => int 1000
  'name2' => int 2000
  'name3' => int 3000

$valuesまた、要件を超える必要がある値を保持するという名前の 2 番目の配列もあります。例:

array
  'name1' => int 2683

また:

array
  'name1' => int 4552
  'name2' => int 324
  'name3' => int 1718

それぞれの値のペアを一致させて、それらが要件を超えていることを確認したいと考えています。存在する場合は、挿入クエリを実行します。

$resultここで、一致ごとに true/false を保持するという別の配列を作成することで、これを既に行っており、次の結果が得られます。

array
  'name1' => boolean true

また:

array
  'name1' => boolean true
  'name2' => boolean false
  'name3' => boolean false

次に、配列に対して foreach を$result再度実行して、挿入を行う前にそれらがすべて true であることを確認します。

私が疑問に思っているのは、これを行うためのより良い方法があるかどうかということです? できれば$resultアレイステップなしで。

$valuesまた、配列は複数回使用されるため、編集できないことにも注意してください。

4

3 に答える 3

0

要件に対して値を 1 つずつチェックし、ブール値を保持して、値が要件を満たさない場合に中断することができます。このようなもの:

$res = true;
foreach ($requirements as $k => $v) {
    $res = $res && ($values[$k] => $v);

    if (!$res) break;
}

最後に$res、クエリを実行する必要があるかどうかを確認できます。

于 2013-04-21T09:28:41.113 に答える
0

array_walk各配列要素でコールバックを使用して実行できます。userdata 引数を使用して要件を比較し、値が無効な場合は false に設定します。ループするときは、値が false でないかどうかを確認するだけです。PCに戻ったら編集してコードを追加します。

于 2013-04-21T09:29:12.027 に答える