如何在PHP中从数组中获取偶数键值而不使用任何循环
我有一个数组,其值从1到10000如何在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
$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