查找数组的奇数结果时遇到问题


Trouble finding odd results of an array

我似乎找不到这些问题的答案。我有以下 php 代码。

 $r = 1,2,3,4,5,6 and so on

我想得到这样的数字

 $result = 1,3,5

或者如果我有

 $s = b,c,d,e,f,g,h,i...and so on

结果应该是

$results c,e,g,i

数字很容易,字母的诀窍是使用ord()

$arr = array(1,2,3,4,5,6);
$arr = array_filter ($arr, function ($number) {
    return $number % 2;
});
print_r($arr);
$arr = array('a', 'b', 'c', 'd', 'e');
$arr = array_filter ($arr, function ($letter) {
    return ord($letter) % 2;
});
print_r($arr);

输出:

Array (
    [0] => 1
    [2] => 3
    [4] => 5
)
Array (
    [0] => a
    [2] => c
    [4] => e
)

这是一个通用的解决方案,同时处理字母和数字:

$arr = array_filter ($arr, function ($value) {
    $value = is_int($value) ? $value : ord($value);
    return $value % 2;
});

这将起作用:

$a = array(1,2,3,4,5,6);
foreach($a as $k => $v){
    if($k&1){
        unset($a[$k]);
    }
} 
print_r($a);