0

if ステートメントがたくさんあり、渡された情報に基づいてさまざまなフィルターがあります。

コードの後半では、IF ステートメントでそのフィルターを再利用する必要もあります。変数は次のとおりです。

$over5hours = "$workextra->id > 767 && $workextra->id <=1301";

これが私のif文です

if($userid==$workextra->ownerId && $workextra->hoursDone >= 5 && $over5hours)

しかし、その over5hours 変数は、IF ステートメントに文字列全体を書き込む代わりに、 >767 && <1301 のみを表示します。

その変数を配列に変換する以外に、これを行う簡単な方法があります。すでにひどい初心者コードを肥大化させるため、IFステートメントを2倍書く必要はありません。助言がありますか?

4

4 に答える 4

2

私があなたの目標を理解していると仮定すると、$over5hours の値を囲む引用符を削除するだけで済みます。

$over5hours = $workextra->id > 767 && $workextra->id <=1301;

しかし、私はあなたの目標を誤解している可能性があります。

于 2012-10-01T23:13:22.623 に答える
1

そのようなステートメントを補間することはできません。式として... && $over5hours評価されません。$over5hoursこれは単なる文字列であり、 と同じ$anyRandomString == trueです。あなたができる最善の方法は、最初に式をブール値に評価し、それをifステートメントで使用することです。

$over5hours = $workextra->id > 767 && $workextra->id <=1301;
if ($userid == $workextra->ownerId && $workextra->hoursDone >= 5 && $over5hours)
于 2012-10-01T23:13:57.883 に答える
0

二重引用符の代わりに一重引用符を使用すると、変数は計算されません。

また、$workextra->id の値が変更されていない場合は、単に引用符を省略できます。

于 2012-10-01T23:14:41.297 に答える
0

印刷するには、一重引用符を使用するか、$ をエスケープする必要があります。しかし、それ以外にも、このコードを希望どおりに実行するには eval() を使用する必要があります。しかし、eval() を使用するのは悪い習慣です。おそらく別のアプローチを見つける必要があります。

于 2012-10-01T23:16:15.917 に答える