2017-08-07 60 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

因爲範圍不超過10,所以你可以使用'in_array()',其中你有一個奇數或偶數的數組,然後你檢查你想要的值 –

+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

您可以使用三元運算符和做測試在同一行:

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

已經回答了7次,你在這裏添加了什麼? –

+0

的確,我試圖阻止人們回答重複的問題。您這樣做並不能幫助任何人,您將以更好的格式複製已在本網站上的內容。如果將來你會記住這一刻,而不是回答一個明顯的問題將其標記爲重複的,我們互動的最終結果就是改善這個網站。 –