2015-04-14 62 views

回答

5

你可以看看使用array_filter()

我從那個確切的頁面修改了下面的內容;

<?php 
function even($var) { 
    return(!($var & 1)); 
} 

$array = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); 

print_r(array_filter($array, "even")); 
?> 
+0

太棒了!你能解釋一下什麼是回報(!($ var & 1)); –

+0

當然。&'運算符被稱爲'bitwise和'(http://php.net/manual/en/language.operators.bitwise.php )運算符,比較每一位並檢查它們是否相等在上面的例子中,如果'$ var'是'2',它將具有'00000010'的二進制值,'1'將具有' 00000001'。'&'運算符會遍歷每一位('1'或'0')並檢查是否相等,由於'00000010'(2)中的'1'位沒有設置,所以'(2&1) ''會返回'0',因爲測試'1 === 0'將會失敗,爲了彌補這個問題,函數做一個'not'或'!'來將其翻轉爲'1'(真)。 – Frank

1

另一種奇怪的方式:

$a = range(1, 10000); // initial 
$b = range(1, 10000, 2); // odd 
$c = array_diff($a, $b); // even 
0

嘗試array_filterrange(1,10000)產生陣列,

$even=array_filter(range(1,10000), 
        function ($input) { 
         return !($input & 1); 
        }); 
echo '<pre>'; 
print_r($even); 
echo '</pre>'; 
1

我喜歡鬼的答案,所以我就在想如何對其進行修改的情況下,你真的想要偶數鍵甚至沒有數值:

<?php 

$values = range(1, 10000); // initial values 
$keys = range(0, (count($values) - 1), 2); // even keys as array values 
$keys = array_flip($keys); // even keys as array keys 
$result = array_intersect_key($values, $keys); // intersection based on keys 
相關問題