如何在PHP中从数组中获取偶数键值而不使用任何循环

如何在PHP中从数组中获取偶数键值而不使用任何循环,php,arrays,loops,Php,Arrays,Loops,我有一个数组,其值从1到10000 $a= array(1,2,....,10000); 我甚至想要不使用任何循环的键值,这是怎么可能的?您可以看看如何使用 我从那一页修改了下面的内容 <?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")); ?&g

我有一个数组,其值从1到10000

$a= array(1,2,....,10000);
我甚至想要不使用任何循环的键值,这是怎么可能的?

您可以看看如何使用

我从那一页修改了下面的内容

<?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"));
?>

另一种奇怪的方式:

$a = range(1, 10000); // initial
$b = range(1, 10000, 2); // odd
$c = array_diff($a, $b); // even
尝试使用
范围(110000)
生成数组

$even=array_filter(range(1,10000),
                   function ($input) {
                       return !($input & 1);
                   });
echo '<pre>';
print_r($even);
echo '</pre>';
$偶数=阵列过滤器(范围(110000),
功能(输入){
返回!($input&1);
});
回声';
打印(偶数);
回声';

我喜欢Ghost的答案,所以我在考虑如何修改它,以防您真的想要偶数键而不是偶数值:


你为什么希望它没有循环?你尝试了什么?你一定尝试了什么,对吗?你想要偶数键或偶数值?我在采访中被问到,我不知道。我在谷歌上搜索过它,但没有找到满意的搜索结果great!你能解释一下什么是回报(!($var&1));当然
&
运算符称为
按位and
()运算符。这将比较每个位并检查它们是否相等。在上面的示例中,如果
$var
2
,则其二进制值为
00000010
1
的二进制值为
00000001
&
运算符将遍历每个位(
1
0
)并检查是否相等。由于未设置
00000010
(2)中的
1
位,
(2&1)
将返回
0
,因为该位的测试
1==0
将失败。为了补偿这一点,该函数执行
而不是
将其翻转为
1
(true)。
<?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