Как получить неравномерные ключи из массива?

#php

#php

Вопрос:

Я должен создать функцию, которая копирует массив (который я передаю функции) только с неравномерными ключами. Пример:

 $a = array(
  '0'   => '0',
  'one  => 'one',
  '1'   => '1',
  'two' => 'two'
)
  

Я должен получить:

 $result = array(
  'one  => 'one',
  'two' => 'two'
)
  

Я создал функцию follow, она работает, но, возможно, мне нужно ее оптимизировать (возможно, существует функция, которая выполняет эту работу). Совет?

 private clean($values){
    $vv   = array();            
    $keys = array_keys($values);        

    for($i=1; $i < count($values); $i =2) $vv[$keys[$i]] = $values[$keys[$i]];              
    return $vv;
}
  

Спасибо

Комментарии:

1. Что вы подразумеваете под «неравномерными» ключами? Вы имеете в виду любой другой ключ? Что произойдет, если ваш массив является массивом(‘0’ => ‘0’, ‘ один => ‘один’, ‘два’ => ‘два’, ‘1’ => ‘1’ )

2. @liquorvicar, не важно, что мне нужно получить ключ => значение массива с этими индексами: 1 — 3 — 5 — 7 и т.д. и т.п.

3. Но индексы, которые вы извлекаете в своем примере, — это «один» и «два». Вы хотите, чтобы пары ключ / значение находились в этих позициях в массиве? кстати, если это вопрос домашнего задания, пожалуйста, отметьте его как таковой.

4. @liquorvicar, мне нужен ключ => значение в этих позициях: 1 3 5 7 9 11 13 15 17 19 и т.д. и т.п.

5. Смотрите мой ответ ниже. Я думаю, это даст вам то, что вам нужно.

Ответ №1:

 $even = range(0, count($array), 2);
  

Источник

Обновить:

 for ($i = 0, $c = count($array); $i <= $c; $i = $i   2) {
    $even = array_push($even, $array[$i]);
}
  

Комментарии:

1. @ZoltanToth, спасибо! Только небольшая ошибка: диапазон (1, количество ($array), 2);

2. Нет, подождите, один moment…it возвращайте только массив с 1 3 5 7 и т.д. и т.п., Мне нужен соответствующий ключ => значение исходного массива. Не только эти числа

Ответ №2:

Попробуйте

 $outputArray = array();
$keyToAdd = false;
foreach( $inputArray as $key => $value ) {
    if( $keyToAdd ) {
        $outputArray[$key] = $value;
    }
    $keyToAdd = !$keyToAdd;
}