2017-08-07 4 views
-1

私は自分のコードでどこが間違っているのか分かりません。私はPHPに慣れていないので、いくつかのガイダンスを求めています。PHP:値が奇数であるか、またはランダムな整数であるかを宣言する

ランダムな整数が奇数または偶数である場合に表示されるIf else文を実行しようとしています。コードを実行すると、「Number is odd」または何も表示されず、理由がわかりません。どんな指導も高く評価されます。

$RandomValue = rand(0, 10); 
$OddValues = (1 || 3 || 5 || 7 || 9); 
$EvenValues = (0 || 2 || 4 || 6 || 8 || 10); 
if($RandomValue == $OddValues) { 
    echo $RandomValue, ' Number is odd'; 
} else { 
    if($RandomValue == $EvenValues) 
     echo $RandomValue, ' Number is even'; 
} 
+1

2で割ると余りをチェックして何が悪いですか? 'var_dump($ OddValues);'と '$ EvenValues'を使って問題を確認してください。 – AbraCadaver

+0

範囲はあなたが 'in_arrayを(使用できる10以上ではないので)あなたが奇数か偶数値の配列を持っていると、あなたが値をチェックどこ'あなたが –

+0

試し '$ VAR%2 ==をしたい0 ' – ArtisticPhoenix

答えて

3

参照、参考のため

if ($RandomValue % 2 === 0) { 
    echo "$RandomValue is even"; 
} else { 
    echo "$RandomValue is odd"; 
} 

のようにそれを確認してください:

+0

これは最初の答えでもなく、それをすべてのドキュメントで参照しているわけでもありません。それはフォーマットの悪いコードです。 – localheinz

+0

私は問題を並べ替えようとしました。 – noobcode

+0

okkですので、あなたの回答が承認されるようにしてください。 OPに伝えてください。 @ localheinz – noobcode

2

モジュロを使用してください。

if($RandomValue % 2 === 0){ echo $RandomValue, ' Number is even'; }

+1

この一方で答えが正しい場合、適切な行動方針は重複としてフラグを立てることです。 –

+1

合意しました。ありがとうございます。私はそれについてもっと勤勉になるでしょう。 – admcfajn

4

もっと簡単な方法があります。 %と書かれたPHPのモジュロ演算子を使用してください。モジュロ演算子は、余りがない場合は0を返し、存在する場合は余りを返します。この場合、2で除算して何かが残っているかどうかを調べることになります。これがモジュロがここでやっていることです。だから、返すために起こっている唯一のものは0または1

$x = 3; 
if($x % 2 == 0) { //number is even} 
else { //number is odd } 
+0

この回答は正しいが、適切な処置は重複としてフラグを立てることである。 –

+0

私は最初に答えたと思います。 – Difster

+0

これは問題とは何も関係ありません。*これは答えられないはずです。*重複しています*。あなたが最初に答えたものは無関係で、重複しているはずです。あなたの答え(そしてここでのすべての答え)は、質問に記載されている重複した目標にすでに入っています。 –

2

あなたはまた、このようなこの

$nums = [1,2,3,4,5,6,7,8,9,10]; 

foreach($nums as $x){ 
    $is_odd = $x & 1; 
    echo $is_odd ? 'ODD' : 'EVEN'; 
    echo "\n"; 
} 

出力として、ビット単位&

$is_odd = $x & 1; 

を使用して確認することができますです

ODD 
EVEN 
ODD 
EVEN 
ODD 
EVEN 
ODD 
EVEN 
ODD 
EVEN 

http://sandbox.onlinephpfunctions.com/code/d47ab3970f24038afb28876b212a6f020eb0a0aa

そして、あなたの質問に完全な答え

$RandomValue = rand(0, 10); 

if($RandomValue & 1) { 
    echo $RandomValue. ' Number is odd'; 
} else { 
    echo $RandomValue. ' Number is even'; 
} 

PSためにここでそれをテスト。あなたも、カンマではなく、ここで.

echo $RandomValue, ' Number is odd'; 

http://sandbox.onlinephpfunctions.com/code/e2573a5dfe0e5aec6c0bfac3ce62c6788b070641

そして実際、我々は唯一の2行

$RandomValue = rand(0, 10); 
echo $RandomValue. ' Number is '.($RandomValue & 1 ? 'even' : 'odd'); 

にもう少しこれを凝縮することができますああを持っていて、わからない場合はどのような& "single and"は(一般的にまたはビット単位で)

http://php.net/manual/en/language.operators.bitwise.php

+0

うまくいくものの投票、笑、大丈夫。あなたが理解していないからといって、それはうまくいかないというわけではありません。 – ArtisticPhoenix

0

あなたは三項演算子を使用し、1行でテストを行うことができます

function evenOrOdd($number) 
{ 
    return 0 === $number % 2 ? 'even' : 'odd'; 
} 
+0

これはすでに7回回答されていますが、ここに正確に何を追加していますか? –

+0

まさに、私は人々が重複した質問に答えるのを阻止しようとしています。あなたはそうすることで誰も助けてはいません。すでにこのサイトにあるコンテンツをはるかに優れた形式で複製しています。将来的には、この瞬間を覚えておいて、明確な質問票に重複して回答するのではなく、相互作用の正味の結果はこのサイトを改善することでした。 –

関連する問題