Кажется, я не могу найти ответ на эту проблему. У меня есть следующий код 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
php
0
user3835444 13 Мар 2015 в 12:06

2 ответа

Лучший ответ

С цифрами довольно просто, с буквами трюк заключается в использовании 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;
});
0
ClmentM 13 Мар 2015 в 09:11

Это будет работать:

$a = array(1,2,3,4,5,6);
foreach($a as $k => $v){
    if($k&1){
        unset($a[$k]);
    }
} 
print_r($a);
0
n-dru 13 Мар 2015 в 09:10